使用 ruby ssh执行shell进程,在远程计算机上连续运行 。我如何强制执行ssh进程的持续时间,然后杀死此进程,并将ruby ssh调用结束,继续执行后续代码?
目的:使用ruby ssh在特定时间内在远程计算机上调用测试。
示例:
Net::SSH.start( hostname.to_s, username.to_s, :password => pw.to_s ) do|ssh|
output = ssh.exec("command line call that runs continuously")
end
我能想到的唯一事情: a)使用终结器将ruby exec调用包围一段时间 b)在命令行调用周围使用perl辅助函数,如here
所示必须有比这更简单的东西吗?
答案 0 :(得分:0)
使用向进程发送信号的看门狗/终结器是最常见的解决方案。请注意,远程进程可能必须单独杀死!
这样做的另一种方法是让双方每隔X秒观察一次本地“信号量文件”...如果文件中有正确的PID,就会优雅地死掉!
所以一旦你的看门狗定时器到期, 您可以通过scp或rsync将该文件同步到远程计算机,并在本地复制一个。这两个工作都可以找到并终止自己。
当然你也可以发送像SIGUSER
这样的UNIX信号