リモートサーバーで実行しようとしている実行時間の長いpythonプログラムがあります。
「sshセッションを終了した後もプロセスを実行し続けるにはどうすればよいですか?」を見てきました。、「SSH 経由でプロセスを開始して、実行を継続する方法は?」、「sshを介して永続的なプロセスを実行する」、およびその他のいくつかのトピックですが、役に立たないようです。
screen
(screen
バックグラウンドプロセスを含む a をデタッチすることにより)およびでpythonプロセスを実行しようとしましnohup
たが、どちらの場合も、sshセッションを終了すると(これが問題かどうかはわかりませんが、X11転送で実行されます、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
にリダイレクトしたくありません。/dev/null
そのため、Python プロセスをデーモンとして実行しようとはしませんでした。(ロギングが に送信されるのが悪いのかもしれませんstdout
、私は推測します...)
(1) ログアウト後もプロセスを実行し続け、(2) stdout
/stderr
をログ ファイルにリダイレクトするにはどうすればよいですか?
(「機能した」ことの1つは、バックグラウンドで[ハングした後] sshプロセスを一時停止してから再実行することでしたが、コンピューターをシャットダウンしたい場合はどうすればよいですか?)