2014-09-05 45 views
1

所以我写这个剧本叫py_script.py,我跑了SSH会话学校的机器上:如果我运行以下脚本,我的ssh会话是否不会终止?

import time 
import os 

while True: 
    os.system("echo still_alive") 
    time.sleep(60) 

...这样做:

bash $ python py_script.py &

这是为了防止可怕的broken pipe消息发生?

问题是,经过一段时间不活动,当我通过SSH连接时,我的连接将被丢弃。为了防止这种情况发生,我编写了上面的脚本,它会自动将消息写入控制台以计算“操作”,以便我不必每5分钟按一次输入。 (我在一台机器上闲置,需要运行一段时间。)

+0

是的,这将起作用......虽然你可以使用一个单线程的shell脚本,比如'while true;活着回声;睡60; done'。这可能不是你想要做的。 (你真的想在你的有用程序的输出中间在你的控制台中随机吐出“still_alive”吗?) – abarnert 2014-09-06 01:04:29

+0

我明白你在说什么了。但是,下面的解决方案在过去并不适合我,所以我想我会做这样的事情。从本质上讲,我想知道的是,如果在后台运行程序(例如“cd。”)做任何事情都会使会话保持活跃状态​​。 – user3806744 2014-09-06 20:11:06

+0

这取决于为什么会话正在关闭......我不能保证你在做什么(通过线路触发会话的输出)会保持活动状态,但在后台运行程序甚至不会那样做的可能性就更小了。 – abarnert 2014-09-08 01:00:30

回答

4

如果您的连接超时,那么查看SSH配置选项可以使您的连接保持活动状态更为明智。

作为首发例如,把下面的一个叫~/.ssh/config文件:

Host * 
ServerAliveInterval 20 
TCPKeepAlive=yes 

你可以阅读更多here

相关问题