incronはどうですか?ファイル/ディレクトリの変更時にコマンドをトリガーします。
sudo apt-get install incron
例:
<path> <mask> <command>
<path>
ディレクトリ(ディレクトリおよび/またはそのディレクトリに直接あるファイル(そのディレクトリのサブディレクトリにあるファイルではありません!)が監視されることを意味します)またはファイルはどこにありますか。
<mask>
次のいずれかになります。
IN_ACCESS File was accessed (read) (*)
IN_ATTRIB Metadata changed (permissions, timestamps, extended attributes, etc.) (*)
IN_CLOSE_WRITE File opened for writing was closed (*)
IN_CLOSE_NOWRITE File not opened for writing was closed (*)
IN_CREATE File/directory created in watched directory (*)
IN_DELETE File/directory deleted from watched directory (*)
IN_DELETE_SELF Watched file/directory was itself deleted
IN_MODIFY File was modified (*)
IN_MOVE_SELF Watched file/directory was itself moved
IN_MOVED_FROM File moved out of watched directory (*)
IN_MOVED_TO File moved into watched directory (*)
IN_OPEN File was opened (*)
<command>
イベントが発生したときに実行する必要があるコマンドです。コマンド仕様内では、次のワイルドダードを使用できます。
$$ dollar sign
$@ watched filesystem path (see above)
$# event-related file name
$% event flags (textually)
$& event flags (numerically)
ディレクトリを監視する場合、$ @はディレクトリパスを保持し、$#はイベントをトリガーしたファイルを保持します。ファイルを監視する場合、$ @はファイルへの完全なパスを保持し、$#は空です。
実例:
$sudo echo spatel > /etc/incron.allow
$sudo echo root > /etc/incron.allow
デーモンを起動します。
$sudo /etc/init.d/incrond start
incrontab
ファイルを編集
$incrontab -e
/home/spatel IN_CLOSE_WRITE touch /tmp/incrontest-$#
試して
$touch /home/spatel/alpha
結果:
$ls -l /tmp/*alpha*
-rw-r--r-- 1 spatel spatel 0 Feb 4 12:32 /tmp/incrontest-alpha
注:Ubuntu
起動時にinotifyをアクティブ化する必要があります。Grubmenu.lstファイルに次の行を追加してください。
kernel /boot/vmlinuz-2.6.26-1-686 root=/dev/sda1 ro inotify=yes