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