【问题标题】:How to close Rserve from the command line如何从命令行关闭 Rserve
【发布时间】:2015-05-05 12:29:29
【问题描述】:

这个问题与close connection 相关,也可能与close 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

(我想在运行该命令之前先确认一下,以防我搞砸了)

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

提前感谢您的宝贵时间!

【问题讨论】:

    标签: r rserve


    【解决方案1】:

    你很困惑:

     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 发送一个比SIGTERM 的默认值-15 更高阶的SIGKILL(即'真的去死')强度(即'请立即停止')。

    【讨论】:

    • 非常感谢 Dirk 解决了我的困惑。我很少使用 R CMD,所以我有很多方面需要混淆。再次感谢。
    • 我的荣幸。我是 Rserve 的忠实粉丝。
    • 我刚开始使用它,老实说我还没有完全理解它的“力量”(我知道它基本上是一个服务器,但肯定还有更多)。我一整天都在使用 pyRserve。还是不太了解 R 和 python 如何通过 Rserve 进行通信,但只是时间问题。我觉得这会很有用!
    最近更新 更多