Pythonプログラムをバックグラウンドで実行し続け、使用中のSSH接続を終了するためにこのコマンドを実行しました。
nohup python files.py >> files.log &
ps
次に、機能していることを確認します。
$ ps a
PID TTY STAT TIME COMMAND
13059 pts/0 Ss 0:00 -bash
13327 pts/0 R+ 0:00 ps a
[1]+ Exit 1 nohup python files.py >> files.log
どういう意味ですか[1]+ Exit 1
?
プログラムをバックグラウンドで実行して正しく終了するにはどうすればよいですか?
ベストアンサー1
bashのコマンドの最後にそれを使用すると、&
バックグラウンドでコマンドが実行されます。[1]+ Exit 1
タスク1が状態1で終了したことを示します。間の数字[]
はジョブ番号で、その後の数字Exit
は終了状態です。終了ステータスが表示されない場合は、コマンドがステータスで終了したことを意味します0
。
他のコマンドを実行する前にこのメッセージが表示されないのは、デフォルトで完了したバックグラウンドコマンドのステータスがプロンプトが更新されるまで表示されないためです。これは、他のコマンドが終了した後、または空のプロンプトを押すこと<ENTER>
ができることを意味します。
編集:
また、.Bashを使用する必要はありませんnohup
。シェル自体がHUPを受信したときにのみプロセスをHUPします。完全に終了すると(またはCTRL + Dを介して)、exit
これは発生しません。
ただし、disown
特定のタスクがHUPを取得しないように、組み込み関数を使用してこれを達成することもできます。
最後に、次の手順を実行して、シェルがHUPを取得したときにすべての操作を拒否するようにSIGHUPハンドラを設定することもできますfunction sighup { disown -a; exit 0; }; trap sighup HUP
。