nohupの使い方
2025/01/26
nohupコマンド自体は,標準出力をカレントディレクトリの“nohup.out”へ書き込むコマンドです.
以下が実行例.シェルスクリプト“./ts2mp4-1920_07.sh”を“test-1/”という引数を付けて実行しています.
実行すると,ジョブ番号“1”とプロセスID“297116”が表示されています.これら数値は当然その時々で変わります.
ushi@server: ~/long-process$ nohup ./ts2mp4-1920_07.sh test-1/ & [1] 297116 ushi@server: ~/long-process$ nohup: 入力を無視し、出力を 'nohup.out' に追記します ushi@server: ~/long-process$実行している処理(ジョブ)が何か確認したいときはjobsコマンドを使います.
ushi@server: ~/long-process$ jobs [1]+ 実行中 nohup ./ts2mp4-1920_07.sh test-1/ & (wd: /home/ushi/long-process) ushi@server: ~/long-process$
もし,実行してから処理を中止したいときは,killコマンドを使います.
先に表示された,ジョブ番号かプロセスIDを指定して止めます.
実行した端末が開いたままならば,ジョブ番号を入力した方が楽です.
ジョブ番号が“[1]”ならば“kill %1”と入力すれば処理を中止できます.
ushi@server: ~/long-process$ kill %1 ushi@server: ~/long-process$ jobs [1]+ Terminated nohup ./ts2mp4-1920_07.sh test-1/ (wd: /home/ushi/long-process) ushi@server: ~/long-process$一度端末を閉じてしまって,ジョブ番号がわからなくなった時は,プロセスIDを検索してからkillします.
ushi@server:~$ ps -ef | grep ts2mp4 ushi 297805 1 0 1月25 ? 00:00:00 /bin/sh ./ts2mp4-1920_07.sh test-1/ ushi 301436 301017 0 00:47 pts/4 00:00:00 grep ts2mp4 ushi@server:~$ kill 297805強制終了しないとダメな場合は,さらに“-9”オプションを付けます.
ushi@server:~$ kill -9 297805