如何取消长时间运行的Ruby Net :: SSH命令

问题描述:

如果我使用exec启动了一个类似于数据库转储的长时间运行的命令,那么我将如何解除远程主机上的该命令(例如,如果用户开始糖化控制C来杀死脚本。如何取消长时间运行的Ruby Net :: SSH命令

在我的测试中,即使您使用Control-C并且终止远程命令一直运行的应用程序,它似乎也是如此。

捕捉SIGINT和SystemExit和清理:

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

那不是杀了Ruby的过程,而不是它开始在远程主机上的程序?我想你可以用任何远程命令替换Process.kill来终止进程。你也想在救援后提出错误,对吧? –

+0

谢谢,@ keithrbennett,根据您的建议编辑的代码示例。 –