昔、「ログアウト後もコマンドを実行し続けたい場合」というエントリで"nohup"コマンドの使い方を書いたのですが、nohupし忘れた時はどうすればいいのか、という話。
指定したバックグラウンドプロセスをデーモン化するためにdisownというbashの組み込みコマンドがあります。
#!/bin/sh while :; do sleep 5 done
ためしに上記のようなスクリプトを用意して、"&"付で実行します。
$ sh test.sh & [1] 2692 $ jobs [1]+ 実行中 sh test.sh &
次に、disownコマンドを実行します。引数には"%"+ジョブ番号を指定します。(上記例だとジョブ番号は"1")
$ disown %1 $ jobs $
この通り。psコマンドの結果は↓
$ ps -edf ・・・省略・・・ nami 2692 1708 0 02:25 pts/0 00:00:00 sh test.sh nami 2739 2692 0 02:28 pts/0 00:00:00 sleep 5
これでターミナルを終了(ログアウト)させても大丈夫です。