0

バックグラウンドで実行される CentOS でスクリプトを作成する必要があります。このスクリプトは、ファイル名「status.txt」が /root/MyFile フォルダーに作成されているかどうかを確認する必要があります。そのファイルが作成された場合、スクリプトによってイベントがキャプチャされるはずです。

txt ファイルがフォルダーに作成されたというイベントを取得するために、スクリプトにどのコード スニペットを記述する必要がありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

1

最も簡単な解決策:

while true; do
do
  [ -e "/root/MyFile/status.txt" ] && { echo file is created; break; }
  sleep 1
done

代わりに、echo file is created実行したいコマンドを書くことができます。

inotifyで同じことができます:

inotifywait --format '%f' -m /root/MyFile 2> /dev/null | while read file
do
  [ "$file" = status.txt ] \
  && [ -e "/root/Myfile/$file" ] \
  && { echo file is created ; break; }
done

このソリューションには、ファイルが作成されるため、すぐにアクションを取得できるという利点があります。そして、最初のケースでは、2 番目のケースも待つことになります。2 番目の利点は、毎秒ファイルシステムをポーリングする必要があることです。

ただし、このソリューションには欠点もあります。

  • Linux でのみ動作します。
  • 比較的新しいカーネルが必要です。
  • inotify-tools をインストールする必要があります。
  • 作成される前に多くのファイルを作成するstatus.txtと、多くの追加の比較操作が行われます。

再開:

最初の解決策が必要だと思います。

于 2012-10-03T07:32:18.553 に答える
0

カーネルが 2.6.13 よりも新しい場合は、inotifyメカニズムを使用して目標を達成できます。パッケージinotify-toolsをインストールし、提供されたを使用して、ファイルを監視するスクリプトを記述します

于 2012-10-03T07:26:35.637 に答える