inotify バックグラウンド実行の検討

前回作成したディレクトリ監視ツールのつづき。

これをどうやってバックグランドで実行するか検討。

linuxの場合、コマンドラインの最後に&を追加することによって、バックグラウンドでプロセスを実行することができるが、実行したターミナルのセッションが切れると、バックグラウンドプロセスも終了してしまう。

このため、セッションが切れても実行し続けるnohupコマンドを使って検討してみる。

まず、nohupコマンドで実行するシェル(dirmon.sh)を作成する。

#!/bin/bash
php dir_monitor.php $1

以下のように実行した後、実行したターミナルを終了する。

# nohup ./dirmon.sh temp2 &> monitor.log &

別のターミナルから上記のプロセスが生きているか確認。監視プログラムが動作していることが確認できる(プロセス5247) 実際に監視ディレクトリにファイルをコピーし、monitor.logに検知したログが出ていれば、問題なし。

> ps aux | grep php
 5247  0.0  0.0  18444  4748 pts/4    S    14:11   0:00 php dir_monitor.php temp2
 5280  0.0  0.0   2308   560 pts/4    S+   14:24   0:00 grep --color=auto php