inotifyでファイルの追加・変更・削除を監視する2010/05/05 |
inotifyでファイルの追加・変更・削除を監視するようにします。
|
|
[1] | inotify インストール |
[root@dlp ~]# yum --enablerepo=epel -y install inotify-tools # EPELからインストール
|
[2] | inotifyを使ってみます。以下では /etc ディレクトリ配下のファイルの追加・変更・削除・移動 を監視するよう inotify を立ち上げています。その他にもいろいろなオプションがありますので 詳細は「man inotify」を参照ください。 |
[root@dlp ~]#
inotifywait -e create,delete,modify,move -mrq /etc & [1] 1227 # 試しに /etc 配下にファイルを作成してみる [root@dlp ~]# touch /etc/test.txt
/etc/ CREATE test.txt
# 検知された # 試しに作成したファイルをリネームしてみる。 [root@dlp ~]# mv /etc/test.txt /etc/test.conf
/etc/ MOVED_FROM test.txt
/etc/ MOVED_TO test.conf # 検知された # 試しに作成したファイルを削除してみる [root@dlp ~]# rm -f /etc/test.conf /etc/ DELETE test.conf # 検知された
|
[3] | 起動スクリプトを作成して対象ディレクトリ配下の変更をログに記録していくようにします。 これにより、重要なファイルがいつ変更されたかが分かるので、トラブル時には役にたつかもしれません。 ただし、誰がやったかまでは分からないので、sudo のログや accton のログ等と組み合わせて見る必要があります。 |
#!/bin/bash # inotifywait: Start/Stop inotifywait # # chkconfig: - 80 20 # description: inotifywait waits for changes to files using inotify. # # processname: inotifywait . /etc/rc.d/init.d/functions . /etc/sysconfig/network LOCK=/var/lock/subsys/inotifywait LOGFILE=/var/log/inotify.log MONITOR=/etc RETVAL=0 start() { echo -n $"Starting inotifywait: " /usr/bin/inotifywait \ --format '%w%f %e %T' \ --timefmt '%Y/%m/%d-%H:%M:%S' \ --exclude '.*\.sw[pox].*' \ -e create,delete,modify,move \ -o $LOGFILE \ -dmrq $MONITOR RETVAL=$? echo [ $RETVAL -eq 0 ] && touch $LOCK return $RETVAL } stop() { echo -n $"Stopping inotifywait: " killproc inotifywait RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f $LOCK return $RETVAL } case "$1" in start) start ;; stop) stop ;; status) status inotifywait ;; restart) stop start ;; *) echo $"Usage: $0 {start|stop|status|restart}" exit 1 esac exit $? chmod 755 /etc/rc.d/init.d/inotifywait [root@dlp ~]# /etc/rc.d/init.d/inotifywait start Starting inotifywait: [root@dlp ~]# chkconfig --add inotifywait
[root@dlp ~]#
chkconfig inotifywait on # 試しに適当にアクションを起こしてみる [root@dlp ~]# touch /etc/test.txt [root@dlp ~]# mv /etc/test.txt /etc/test.conf [root@dlp ~]# vi /etc/test.conf
[root@dlp ~]#
rm -f /etc/test.conf # ログをみると以上の4操作で以下のログが記録されていることが分かります [root@dlp ~]# cat /var/log/inotify.log /etc/test.txt CREATE 2011/05/08-00:53:31 /etc/test.txt MOVED_FROM 2011/05/08-00:53:42 /etc/test.conf MOVED_TO 2011/05/08-00:53:42 /etc/4913 CREATE 2011/05/08-00:53:53 /etc/4913 DELETE 2011/05/08-00:53:53 /etc/test.conf MOVED_FROM 2011/05/08-00:53:53 /etc/test.conf~ MOVED_TO 2011/05/08-00:53:53 /etc/test.conf CREATE 2011/05/08-00:53:53 /etc/test.conf MODIFY 2011/05/08-00:53:53 /etc/test.conf~ DELETE 2011/05/08-00:53:53 /etc/test.conf DELETE 2011/05/08-00:53:59 |