我有一個長期運行的Python程序,我試圖在遠程服務器上運行。試圖通過SSH持久化進程失敗
我看過"How to keep processes running after ending ssh session?"," How to start process via SSH, so it keeps running?","Run a persistent process via ssh",和其他一些話題,但他們似乎沒有幫助。
我試着運行與screen
蟒蛇進程(通過一個分離含screen
後臺進程)和nohup
,但在這兩種情況下,當我退出SSH會話(這 - 我不知道這事 - 由於python程序正在創建一些圖形,所以運行X11轉發),ssh會話掛起。
的SSH過程中掛起,即使我重定向stdin
,stdout
,stdout
自/至/dev/null
。 殺死ssh會話會殺死python進程。當我殺了SSH,下面的錯誤信息被打印在遠程服務器上:g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOStream returned 0 bytes on an async read (g-io-error-quark, 0). Exiting.
而且,我真的不希望stdout
或stderr
重定向到/dev/null
,因爲我想將它們重定向到一個日誌文件。所以我沒有嘗試將python進程作爲守護進程運行。 (也許是壞的記錄發送到stdout
,我猜...)
我應該怎麼做,這樣我可以:(1)把我的進程退出運行後,(2)重定向stdout
/stderr
到一個日誌文件?
(其中有一點是「合作」已暫停,然後重新運行SSH進程[它掛起後,在後臺,但如果我要關閉我的電腦?)
如果您的程序實際需要X11服務器,您可以考慮使用['xpra'](http://xpra.org/)而不是'screen'。 –
ssh掛起,但是你想要堅持的程序會發生什麼? – Raber
當ssh掛起時,沒有任何反應。如果我殺死ssh(通過'Ctrl-c'或'〜.'),python程序也會死掉。 我會看看'xpra'。 – jiangty