2014-09-05 68 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

相關問題