サーバーにSSHで接続できるbashスクリプトを作成し、継続的なバックグラウンドプロセス(無制限のPythonスクリプト)を開始してからサーバーを終了したいと思います。私が試したことは次のとおりです。
ssh user@domain "python3 script.py &"
ssh user@domain "python3 script.py & exit"
ssh user@domain "nohup python3 script.py & exit"
それらのどれも仕事がありません。スクリプトは正常に起動しますが、サーバーからログアウトできず、ログイン状態が維持されます。
ベストアンサー1
このnohup
コマンドは、ユーザーが思うようには実行されません。ブレーク信号を無視して、ターミナルドライバが接続されたSIGHUP
プロセスに送信しなくてもSTDIOの(ターミナル)接続を削除できますが、nohup
独自のSTDIO接続を閉じません.エフェクトはそれを開始したプロセスに渡すため、sshd
プロセスが終了してこれらの記述子が閉じるのを待ちます。
したがって、起動プロセスが提供するSTDOUTおよびSTDERRディスクリプタにも関連付けられていないことを確認する必要がありますsshd
(STDINで開かれている)ファイルまたは。 SSH接続が失われても何も送信されないため、このコマンドは必ずしも必要ではありません。/dev/null
/dev/null
nohup
SIGHUP
この試み:
ssh user@domain "python3 script >/dev/null 2>&1 &"