Raspberry Pi 3B(以下:ラズパイ)で、指定ディレクトリ内を監視して更新されたら任意の処理を走らせるという事をしたいと思います。
- フック : Aディレクトリに画像が保存される
- する事 : AディレクトリとBディレクトリの状態を同期
具体的には上記のような事をするためにinotify-toolsを使用しします。
inotify-toolsのインストール
apt-getでインストールします。
$ sudo apt-get install inotify-tools
inotyfywaitコマンドで監視
inotyfywait -e 【イベント】 【監視するディレクトリ】
inotfywaitコマンドで特定イベントと監視するディレクトリを指定します。
今回はmoved_to(対象ディレクトリ内へ移動された)
イベントの監視をして処理をさせます。
inotify_single.sh
#!/bin/sh
inotifywait -m -e moved_to A | \
rsync -rv A B
ryncコマンドを使ってAとBを同期させています。
-mオプションについて
-m
オプションをつけないとが初回のイベント発行でinotifywaitが終了してしまうので付けています。
継続的に監視する
このままだと一連のイベントが通知されると監視が終了してしまいますので処理を修正します。
inotify_continuous.sh
#!/bin/sh
inotifywait -m -e moved_to A | \
while read _; do
rsync -rv A B
done
このようにwhile文を使って継続的に監視するようにしています。
環境
- Raspberry Pi 3B
- Raspbian GNU/Linux 9.8 (stretch)
- inotifywait 3.141
参考
-
inotifywaitのバージョンは
inotifywait -hl
で確認できます ↩