disownコマンド
昨日知りましたw
disownはバックグラウンドプロセスをデーモン化するbashの組み込みコマンドで、引数に"%"+ジョブ番号を指定します。
以下、使用例。
$ cat tmp.php <?php while (true) { sleep(10); file_put_contents('/tmp/tmp.php.log', date('YmdHis'). PHP_EOL, FILE_APPEND|FILE_TEXT); } $ php tmp.php & [1] 31993 $ jobs [1]+ Running php tmp.php & $ disown %1 $ jobs $
これでターミナルを終了させても大丈夫。
再度ターミナルで繋げて、pstree確認してみると、initプロセスの子プロセスになっているのが分かります。
init(1)─┬─atd(1819) : ├─mingetty(1916) ├─php(31993) ├─postmaster(1867)─┬─postmaster(1958) :
追記(2009/10/16 11:54)
linuxでバックグラウンド処理を便利にするコマンド+おまけ - 絶品ゆどうふのタレからのTBで良いこと教えてもらいました。
で、試してみたんですが、バックグラウンド実行する際に"&|"を付ければOKとありますが、"&!"のようですでもいけるっぽいです。また、これはzshでの話で、bashでは使えませんでした(ちなみに個人的にはzshは使ってません><)。
$ php tmp.php &! -bash: syntax error near unexpected token `newline' $ zsh % ps axww | grep tmp.php % php tmp.php &! % ps axww | grep tmp.php 5443 pts/0 SN 0:00 php tmp.php % % php tmp.php &| % ps axww | grep tmp.php 5443 pts/0 SN 0:00 php tmp.php 6391 pts/0 SN 0:00 php tmp.php %