如何从命令行关闭Rserve

时间:2015-05-05 12:29:30

标签: r rserve

这个问题与close connection有关,也可能与close Rserve有关。但是,在后一种情况下,有连接打开,在第一种情况下,答案没有说明如何" kill"服务器。

重要的是要说我是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

(我想在运行该命令之前确保,以防我搞砸了)

无论如何,这个问题很简单。如何关闭服务器以重新运行它。

提前感谢您的时间!

1 个答案:

答案 0 :(得分:8)

你很困惑:

 R CMD something

将始终转到R.并且R不再知道Rserve正在运行,即使您已经通过R CMD Rserve启动它:这些现在是不同的进程。

你应该做的是

 kill 18177       # or possibly  kill -9 18177

并且有kill的包装器,它首先为名称设置grep并为您找到PID:

 killall Rserve   # or possibly  killall -9 Rserve

-9发送一个更高阶SIGKILL(即“现在真的死去”)强度超过SIGTERM的默认值-15(即'请立即停止')。