#やりたいこと
ユーザがPCとUSBメモリやSDカードをつないでデータを出し入れした時の
ログをとりたい。また、勝手にユーザが監視プロセスを落とせないようにしたい。
#インストール
inotify-toolsをインストール
sudo apt-get install inotify-tools
#試してみる
qiita@ubuntu:~$ inotifywait -m .&
mオプションをつけないと、1回出力するとコマンドが終了するとのこと。
qiita@ubuntu:~$ ls
Desktop Documents Downloads Music
./ OPEN,ISDIR
./ ACCESS,ISDIR
./ CLOSE_NOWRITE,CLOSE,ISDIR
qiita@ubuntu:~$
qiita@ubuntu:~$
lsで監視しているディレクトリにアクセスすると何か表示されている。
サブディレクトリはどうだろう
qiita@ubuntu:~$ mkdir hoge
./ CREATE,ISDIR hoge
qiita@ubuntu:~$ cd hoge
qiita@ubuntu:~/hoge$ ls
./ OPEN,ISDIR hoge
./ ACCESS,ISDIR hoge
./ ACCESS,ISDIR hoge
./ CLOSE_NOWRITE,CLOSE,ISDIR hoge
qiita@ubuntu:~/hoge$ mkdir hoge
qiita@ubuntu:~/hoge$ cd hoge
qiita@ubuntu:~/hoge/hoge$ ls
qiita@ubuntu:~/hoge/hoge$
監視されない
rオプションでサブディレクトリも監視されるようだ
qiita@ubuntu:~$ inotifywait -mr . &
[1] 2760
qiita@ubuntu:~$ Setting up watches. Beware: since -r was given,
this may take a while!
Watches established.
qiita@ubuntu:~$ cd hoge
qiita@ubuntu:~/hoge$ cd hoge
qiita@ubuntu:~/hoge/hoge$ ls
./hoge/ OPEN,ISDIR hoge
./hoge/hoge/ OPEN,ISDIR
./hoge/ ACCESS,ISDIR hoge
./hoge/hoge/ ACCESS,ISDIR
./hoge/ ACCESS,ISDIR hoge
./hoge/hoge/ ACCESS,ISDIR
./hoge/ CLOSE_NOWRITE,CLOSE,ISDIR hoge
./hoge/hoge/ CLOSE_NOWRITE,CLOSE,ISDIR
:%
ちなみに、作業中、firefoxを動作させていたのだけれど、
.cache/mozilla/firefox/
配下に書き込みがfirefoxから行われるようで、
大量のログがnotifywaitから書き出されていました。
ユーザを変えても、アクセスするとログは出力されました。
もし、ルートディレクトリを監視するとどうなるか?
qiita@ubuntu:~/hoge/hoge$ inotifywait -mr / &
[1] 2884
qiita@ubuntu:~/hoge/hoge$ Setting up watches.
Beware: since -r was given, this may take a while!
qiita@ubuntu:~/hoge/hoge$ Failed to watch /;
upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user
via `/proc/sys/fs/inotify/max_user_watches'.
大量のディレクトリは駄目なようです。
#では?
/dev配下を監視して、USBメモリのマウントを監視
マウントされたディレクトリへの読み書きを監視
で所要の目的は達成?
あとはデーモン化か?
#参考記事
inotify-toolsでファイルやディレクトリを監視する
[Linux] inotifywaitを使ってファイル更新時に任意のコマンドを実行する
#ストレージ接続の監視方法
/dev配下を監視しておけばいいのかな・・・