SSHを介して長期実行バックグラウンドプロセスを開始し、すぐに切断する方法は?

SSHを介して長期実行バックグラウンドプロセスを開始し、すぐに切断する方法は?

サーバーに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/nullnohupSIGHUP

この試み:

ssh user@domain "python3 script >/dev/null 2>&1 &"

おすすめ記事