gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:45 25 4
gpt4 key购买 nike

使用 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) 使用 Terminator 环绕 ruby​​ exec 调用一段时间b) 在命令行调用周围使用 perl 辅助函数,如图所示 here

一定有比这更简单的吧?

最佳答案

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

另一种方法是让两端每隔 X 秒监视一次本地“信号量文件”...如果文件中有正确的 PID,请优雅地死去!

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

当然你也可以发送一个 UNIX 信号,比如 SIGUSER

关于ruby - 如何在远程计算机上的 Ruby ssh exec 上强制执行持续时间或超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5530107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com