Linux terminal 上でジョブをバックグラウンドで実行する方法について説明する。
バックグラウンド実行
コマンドの最後に "&" をつけるだけ!
[fuji@fujios ~]$ sleep 1000 &
[1] 4593
上の1000秒待機するジョブは、プロセス番号[4593]に割り振られましたよ、って意味。
実際にプロセスを確認してみる。
[fuji@fujios ~]$ ps
PID TTY TIME CMD
4540 pts/0 00:00:00 bash
4593 pts/0 00:00:00 sleep
4594 pts/0 00:00:00 ps
ちゃんとバックグラウンド実行できていることを確認できた。
“ログアウトしても”バックグラウンド実行
SSH接続で時間のかかるジョブを実行した際に、SSH接続を切るとジョブが死んでしまう。
ジョブが kill されないようにするには、"nohup" コマンドを使う。
[fuji@fujios ~]$ nohup sleep 1000 &
[1] 4524
[fuji@fujios ~]$ nohup: appending output to `nohup.out'
ここで気をつけるのは、"nohup" がバックグラウンド実行でないということ。
そこで末尾に "&" をつけてバックグラウンド実行にしている。
ちなみに標準出力/エラーは、プログラムを実行したディレクトリに nohup.out というファイル名で保存される。