2015-05-05 107 views
6

此問題與close connection有關,也可能與此close Rserve有關。但是,在後面的情況下,有連接打開,在第一種情況下,答案沒有指定如何「殺死」服務器。如何從命令行關閉Rserve

重要的是要說我是Rserve的新手,今天我第一次使用它來進行一些輕度的R-python交互。我在命令行啓動Rserve:

% R CMD RServe 

不過,我覺得我已經關閉了在會議結束後的連接,但是當我現在用新配置再次嘗試重新啓動Rserve我得到的錯誤:

% ##> SOCK_ERROR: bind error #48(address already in use) 

這很清楚。此外ps ax | grep Rserve回報:

% ps ax | grep Rserve 
18177 ?? Ss  0:00.33 /Library/Frameworks/R.framework/Resources/bin/Rserve 
18634 s006 U+  0:00.00 grep Rserve 

我明白,確實意味着服務器正在運行。我已經嘗試了幾件事情:

% R CMD RSclose 
/Library/Frameworks/R.framework/Resources/bin/Rcmd: line 62: exec: RSclose: not found 

% R CMD RSshutdown 
/Library/Frameworks/R.framework/Resources/bin/Rcmd: line 62: exec: RSshutdown: not found 

最後

% R CMD shutdown 
shutdown: NOT super-user 

我在想,我應該然後運行:

% sudo R CMD shutdown 

(我想,以確保運行命令之前,萬一我擰東西)

無論如何,這個問題會很簡單。我如何關閉服務器以重新運行它。

在此先感謝您的時間!

回答

8

你感到困惑:

R CMD something 

會經常去河和R不再知道Rserve是,即使你可能已經通過R CMD Rserve開始運行它:這些都是現在不同的進程。

你應該做的是

kill 18177  # or possibly kill -9 18177 

和有包裝到kill其中第一grep命令的名稱,並找到PID爲您提供:

killall Rserve # or possibly killall -9 Rserve 

的發送高階SIGKILL (即「現在真的去死」)的強度比SIGTERM的缺省值-15(即'請現在停止')。

+0

非常感謝德克解決我的困惑。我很少使用R CMD,所以我在那裏遇到很多困惑的方面。再次感謝。 – Javier

+2

我的榮幸。我是Rserve的忠實粉絲。 –

+1

我剛開始使用它,說實話我仍然不完全理解它的「功能」(我知道這基本上是一個服務器,但肯定還有更多)。我一整天都在使用pyRserve。仍然不太清楚R和Python如何通過Rserve進行溝通,但這只是時間問題。我覺得這將會非常有用! – Javier