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