1

そのため、コピーを開始するためにファイルの作成がいつ完了したかを調べる方法を探しているときに、inotifywait を見つけましたが、うまくいかないようです。

Redline を使用してリモート コンピューターのメモリをダンプし、適切なディレクトリとファイルを見つけることができるようにスクリプトを作成していますが、inotifywait をセットアップしようとすると、ハングするだけで、そのファイルが完全であることを返しません (私は実際のメモリ イメージが処理されたとしても、スキャン全体が完了するまでファイルが Redline によって開かれたままになるのでしょうか?)

私はもう試した

inotifywait -m -e create fileName

inotifywait -m -e close_write fileName

しかし、どちらも機能していないようです。彼らは、監視が作成されたと言いますが、ファイルが書き込まれなくなった後もずっとそこにハングアップします。そして、リモートマシンがまだファイルのハンドルを開いているかどうかを確認する方法がわかりません... cp 確かにまだ機能し、 tail -f は、ファイルが書き込まれていないことを明確に示しています。ファイルをコピーする準備ができていることをスクリプトに通知するエレガントなソリューションはありますか?

4

1 に答える 1

0

終了しないように要求しました:

   -m, --monitor
          Instead of exiting after receiving a single event, execute
          indefinitely.  The default behaviour is to exit after the
          first event occurs.

無期限に待機します、試してくださいinotifywait -e close_write fileName

別のアプローチは、ビジー ループを で実装すること--timeout / -tですが、それは継続的なデータ入力を前提としています。

while inotifywait -e modify -t 15 fileName; do
    echo "something was written in the last 15 seconds"
done
echo "no activity for 15 seconds. done?"
于 2015-05-07T19:29:53.400 に答える