特定の「トリガーファイル」の生成をどのように監視できますか?

特定の「トリガーファイル」の生成をどのように監視できますか?

start特定のディレクトリに呼び出されたファイルが生成されたときにアプリケーションを実行するシェルスクリプトを作成する必要があります。

特定の名前のファイルが特定の場所に生成されるのを待つシェルスクリプトをどのように作成しますか?

答え1

inotifywaitお使いのシステムに他の人が述べたように(ほとんどのLinuxディストリビューション、OpenBSDなど)、そのシステムがある場合は、リソースを最も少なく使用する方法は次のようになりますinotifywait

rm -f yourdirectory/start
while [ "$(inotifywait -e create -q --format %f yourdirectory)" != "start" ]; do :; done
yourcommand

これにより、startファイルが削除され、yourdirectory実行される前にファイルが生成されるのを待ちますyourcommand-e create生成イベントにのみ興味があることを指定し、診断メッセージを-q望まないことを指定しinotifywait--format %f生成されたファイルの名前のみが出力に表示されるように指定します。

1つもない場合は、次も機能し、inotifywait最大遅延時間は1秒です。

rm -f yourdirectory/start
while [ ! -e yourdirectory/start ]; do sleep 1; done
yourcommand

答え2

私は「inoticoming」ツールを使ってディレクトリの変更を監視するのが好きです。ロギングとpidファイル生成機能があります。追加の「作業オプション」を使用して変更コマンドを実行できます。これはとても良いです。 :)

「fileschanged」というツールが覚えていますが、一度も使用したことはありません。一度見てみる価値があるようです。 -どのように

関連情報