ディレクトリが更新されたときに自動的にコマンドを実行するにはどうすればよいですか?

ディレクトリが更新されたときに自動的にコマンドを実行するにはどうすればよいですか?

CentOSで/opt/dataのようなディレクトリを監視する方法はありますか?そのディレクトリにファイルが追加されるたびに、自動的にコマンドが実行されますか? inotifyをインストールしましたが、これが最高のツールであるかどうかはわかりません。

助けてもらえますか?事前にありがとう

答え1

inotifywait以下を使用してファイルを追加したら、ディレクトリを監視してコマンドを実行できます。

inotifywait -m -e create -e moved_to --no-newline --format "%f%0" /opt/data | \
   while IFS= read -r -d '' NAME; do
       echo "Added file: '${NAME}'"
   done

あなたのコマンドに置き換えてくださいecho "Added file: '${NAME}'"

オプションinotifywait:

  • -m- 最初のイベント以降は終了しないでください。
  • -e create -e moved_to- 報告するイベントです。 inotifyはファイル生成イベントと移動イベントを区別するため、両方が指定されます。
  • --no-newline- ファイル名の後に改行文字を印刷しないでください。
  • --format "%f%0"- 0で終わるファイル名のみを印刷します。

関連情報