2016-04-24 13 views
2

execを使用してデータベースのダンプのような長時間実行するコマンドを起動すると、たとえば、ユーザがリモートホスト上でそのコマンドをキャンセルしようとするとどうなりますか? Ctrl + Cを押してスクリプトを終了します。長時間実行しているRuby Net :: SSHコマンドを取り消すには

私のテストでは、たとえControl-Cでリモートコマンドが実行されているアプリケーションを強制終了しても、そのように思えます。

答えて

0

キャプチャSIGINTとSystemExitをしてクリーンアップ:

rescue SystemExit, Interrupt 
    # clean up 
    # net-ssh execute a kill on the pid 
    # raise error 
end 
+1

は、ちょうどそれがリモートホスト上で起動プロセスをRubyのプロセスを強制終了していないと思いませんか?私はProcess.killを、リモートコマンドがプロセスを終了させるものに置き換えることができると思います。また、あなたはそれを救済した後にエラーを起こしたいでしょうか? –

+0

ありがとう、@keithrbennett、あなたの提案に基づいてコード例を編集しました。 –

関連する問題