ファイルが作成されたかどうかを監視するにはどうすればよいですか?

ファイルが作成されたかどうかを監視するにはどうすればよいですか?

たとえば、ファイルを監視するには/tmp/somefile123いくつかのイベントの後に作成されました。inotifywaitしかし、ここに問題があります:

# inotifywait -q -e create /tmp/somefile?*
Couldn't watch /tmp/somefile?*: No such file or directory

そのようなファイルは存在しないので、そこにあるかどうかを知りたいのです。

この問題を解決するにはどうすればいいでしょうか?

上院: 私が何を達成したいのかを説明すれば、もっと明確になるかもしれません。

CPU 消費を最小限に抑えたシェル スクリプト (sh) を次のように記述する必要があります。

if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then
    blah-blah-blah some actions
fi
# And then similarly monitor if this file was deleted and then do another actions

スクリプトの実行が停止すると予想されますinotifywait -e $SPECIFIC_FILE を作成するこの$SPECIFIC_FILEが作成されるまでは、

while [ ! -f $SPECIFIC_FILE ]; do
    blah-blah-blah some actions
    sleep 1
done

答え1

持つことによってinotifywaitチェックしてください親ディレクトリ:

/tmp$ inotifywait -e create -d -o /home/me/zz /tmp
/tmp$ touch z1
/tmp$ cat ~/zz
/tmp/ CREATE z1

イベントの時間形式を指定するには、-timefmtオプション。また、例えばスクリプトファイルを実行してすぐに動作させたい場合には、テール-fログファイルを継続的に監視するためのスクリプトファイルでは、/ホーム/私/zzまたは、名前付きパイプファイルしてinotifywaitスクリプトがそこから読み取りながら、そこに書き込みます。

関連情報