如何取消长时间运行的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
那不是杀了Ruby的过程,而不是它开始在远程主机上的程序?我想你可以用任何远程命令替换Process.kill来终止进程。你也想在救援后提出错误,对吧? –
谢谢,@ keithrbennett,根据您的建议编辑的代码示例。 –