6

この質問は密接なつながりに関連しており、おそらくこの密接な Rserve にも関連しています。ただし、後者のケースでは接続が開いており、最初のケースでは、サーバーを「強制終了」する方法が回答で指定されていません。

私が Rserve を初めて使用することは重要であり、R と Python の軽度のやり取りのために今日初めて Rserve を使用しました。コマンドラインから次のように 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

(何かを台無しにした場合に備えて、そのコマンドを実行する前に確認したいと思います)

とにかく、質問は非常に簡単です。サーバーを閉じて再実行するにはどうすればよいですか。

お時間をいただきありがとうございます。

4

1 に答える 1

8

あなたが混乱しています:

 R CMD something

は常に R に移動します。また、を介して開始した可能性がある場合でも、実行されていることをR認識しなくなります。これらは現在、別個のプロセスです。RserveR CMD Rserve

あなたがすべきことは

 kill 18177       # or possibly  kill -9 18177

killそして、最初に名前をgrepしてPIDを見つけるラッパーがあります:

 killall Rserve   # or possibly  killall -9 Rserve

は) のデフォルトの -15 よりも-9高次のSIGKILL(つまり、「本当に今すぐ死んでください」) 強度を送信しますSIGTERM(つまり、「今すぐやめてください」)。

于 2015-05-05T12:40:02.330 に答える