PuTTY SSHを介してアクセスされるAWS EC2 Ubuntu 20.04インスタンスがあります。次のようにPythonプロセスを実行します。MPIを開く次のコマンドを渡します。ルートでない場合:
nohup mpirun python3 job.py
シェルが開いていると正常に動作します。プロセスがおよびps
を使用して表示されるわけではありませんが、job
nohup.outおよび変更されたファイルシステムを介して数時間実行した後でもまだ機能していることがわかります。
シェルを閉じると、nohup プロセスが終了します。また、上記のnohupコマンドを実行すると、もはや何も入力できないことに注意してください(カーソルが空です)。それでps
そこに走って行った時、job
二番目の殻を開かなければなりませんでした。私は以前nohupを使ったことがなかったし、これは奇妙だと思いました。
nohup.outファイルにエラーがあるかどうかを調べたところ、何も記録されていないことがわかりました。
要約すると、次のようになります。
SSHインスタンス(puTTY)を閉じてnohupプロセスを終了します。
psとjobがnohupプロセスが実行中であることを知っているにもかかわらず、そのプロセスはリストされません。
必要に応じて追加の質問に回答できます。
ベストアンサー1
jobs
現在のシェルに対するアクションのみを表示できます。
ないps
現在のユーザーと同じ有効なユーザーIDと、呼び出し元と同じ制御端末を持つプロセスを表示します。。たとえば、ps -e
他のプロセスを確認する必要があります(ただし、オペレーティングシステムのすべてのプロセスが必ずしも必要ではありません。)。
走れば
nohup something … &
その後、同じシェルでjobs
またはを実行できますps
。それを見ることを期待しないでくださいnohup
。その使命は特定の方法で行動することであり、something
持続する必要はありません。見ると予想されますsomething
。
したがって、プロセスが生き残った可能性があり、プロセスが死んだと仮定した可能性があります。それとも本当に死んでいるかもしれません。バラよりプロセスが終了するのはなぜですかnohup
?これ回答2つの可能性が挙げられます。
KillUserProcesses=yes
logind.conf
(システム)から。- または生成されたプロセス
SIGHUP
はnohup
。
詳しくはこちらをご覧ください。nohup
間のdisown
違い&
。私が正しく理解したら、disown
生成されたプロセスが独自のハンドラを実装するのに役立ちますSIGHUP
。次のように使用してください。
nohup something … &
disown