シェルでファイルの作成と削除を待つのにinotify-tools
を使います。
インストール
apt
でインストールします。
$ sudo apt install -y inotify-tools
ファイルの作成と削除を待つ
waitfile.sh
に指定した引数のファイルが作成されるのをfilewait
で待ちます。
その後、そのファイルが削除されるのをrmwait
で待ちます。
$ cat waitfile.sh
#! /bin/bash
fname=$1
filewait()
{
ret=1
while [ $ret == 1 ]
do
inotifywait -q -e create -t 1 . | grep $fname
ret=$?
done
}
rmwait()
{
ret=1
while [ $ret == 1 ]
do
inotifywait -q -e delete -t 1 . | grep $fname
ret=$?
done
}
echo waiting for $fname
filewait
echo $fname created!, waiting for $fname remove
rmwait
$
notifywaitの動作
最初は、よくわからず下記のようににファイルを指定してcreate
イベントを待とうとしましたが、ファイルがないとNo such file
となります。
$ inotifywait -e create fin.txt
Setting up watches.
Couldn't watch fin.txt: No such file or directory
$
ファイルがあると永遠に待ちます。
$ inotifywait -e create fin.txt
Setting up watches.
Watches established.
ディレクトリを指定すると次のようになります。
実行後に別の端末からfin.txtを作成すると./CREATE fin.txt
が発生します。
$ inotifywait -e create .
Setting up watches.
Watches established.
./ CREATE fin.txt
$
色々なファイルシステムで試してみると面白いかもしれません。