我有一个长时间运行的 python 程序,我试图在远程服务器上运行。
我看过“如何在结束 ssh 会话后保持进程运行?” , " 如何通过 SSH 启动进程,让它继续运行?" , "Run a persistent process via ssh"和其他一些主题,但它们似乎没有帮助。
我已经尝试使用screen
(通过分离screen
包含后台进程)nohup
和,因为 python 程序正在创建一些图形),ssh 会话挂起。
即使我重定向stdin
, stdout
, stdout
from/to ,ssh 进程也会挂起/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
to /dev/null
,因为我想将它们重定向到日志文件。所以我没有尝试将python进程作为守护进程运行。(也许日志被发送到 很糟糕stdout
,我猜......)
我应该怎么做,以便我可以:(1)在注销后保持我的进程运行,(2)重定向stdout
/stderr
到日志文件?
(“有效”的一件事是在后台暂停然后重新运行 ssh 进程 [挂起后],但是如果我想关闭计算机怎么办?)