如何在远程机器上的Ruby ssh exec上强制执行持续时间或超时

时间:2011-04-03 14:19:12

标签: ruby ssh exec

使用 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

所示

必须有比这更简单的东西吗?

1 个答案:

答案 0 :(得分:0)

使用向进程发送信号的看门狗/终结器是最常见的解决方案。请注意,远程进程可能必须单独杀死!

这样做的另一种方法是让双方每隔X秒观察一次本地“信号量文件”...如果文件中有正确的PID,就会优雅地死掉!

所以一旦你的看门狗定时器到期, 您可以通过scp或rsync将该文件同步到远程计算机,并在本地复制一个。这两个工作都可以找到并终止自己。

当然你也可以发送像SIGUSER

这样的UNIX信号