在我的应用程序中,我想exec!
在指定时间后终止我的 SSH 连接命令。
我找到了:timeout
forNet::SSH.start
命令,但按照文档,这仅适用于初始连接。exec
该命令有等效的东西吗?
我的第一个猜测是不使用exec!
,因为这将等到命令完成,而是使用exec
并用循环包围调用,该循环检查每次迭代的执行状态并在给定时间后失败。
像这样,如果我正确理解了文档:
server = NET::SSH.start(...)
server.exec("some command")
start_time = Time.now
terminate_calculation = false
trap("TIME") { terminate_calculation = ((Time.now - start_time) > 60) }
ssh.loop(0.1) { not terminate_calculation }
然而,这对我来说似乎很脏。我期待类似的东西server.exec("some command" { :timeout=>60})
。也许有一些内置功能可以实现此功能?