web-dev-qa-db-ja.com

ターミナルを閉じた後でもバックグラウンドでpythonプログラムを実行する方法は?

Ubuntuマシンのターミナルからpythonプログラムを実行していますが、

$ python test.py

しかし、端末を閉じるとプログラム全体が停止します。このpythonプログラムをバックグラウンドで実行する方法はありますか。端末を閉じても実行し続けることができますか?

また、このプログラムをバックグラウンドで実行した後、そのターミナルに再度ログインしている場合、実際のプログラムがまだ実行中かどうかを確認するにはどうすればよいですか?

38
arsenal

pythonスクリプトでShebang行を使用します。コマンドを使用して実行可能にし、

chmod +x test.py

端末を閉じても、ハングアップを使用せずにプログラムをバックグラウンドで実行します。

Nohup /path/to/test.py &

または単に(プログラムに変更を加えずに)

Nohup python /path/to/test.py &

&を使用してバックグラウンドで配置することを忘れないでください。

Nohupの役割:Nohupは、スクリプトで SIGHUP を無視し、 stdout/stderr をリダイレクトしますファイルNohup.out。これにより、ログアウト後にコマンドをバックグラウンドで実行し続けることができます。シェル/ターミナルを閉じるかログオフすると、コマンドはそのシェルの child ではなくなります。 init プロセスに属します。 pstreeで検索すると、プロセス1(init)によって所有されていることがわかります。

プロセスを再度表示するには、ターミナルで使用し、

ps ax | grep test.py

フォアグラウンド(端末が既に閉じられているため)が存在しないため、これをフォアグラウンドに戻すことはできません。そのため、いったん閉じられた端末を再び元に戻す方法はありません。

71
souravc

python test.py &

バックグラウンドでファイルを実行します。

実行中のプログラムを見つけるには、ps -eを使用して実行中のすべてのプログラムをリストできます。 grepを使用して、リストから特定のプログラムを見つけることができます。

13
en4bz