远程长时间运行命令

时间:2014-09-17 20:19:47

标签: fabric paramiko

我有一个简单的bash脚本只在远程主机(Amazon EC2)上“睡眠3600”,我使用fabric通过fabric.operations.run调用它(我没有设置任何env.timeout或env.command_timeout)

如果远程bash脚本休眠3600秒,则在bash脚本运行完毕后,fabric无法返回。我打印了堆栈跟踪,它一直等待channel.exits_status_ready()https://github.com/fabric/fabric/blob/master/fabric/operations.py LINE:794),即使脚本已经返回。

这仅适用于长时间运行的过程。我试图使bash脚本睡眠120秒,它运行正常。

我使用netstat仔细检查了打开的连接,并且由fabric打开的ssh会话仍然存在。

需要帮助:)知道为什么会这样吗?

1 个答案:

答案 0 :(得分:3)

想通了,只需要使用env.keepalive = 1