別のプロセスで作成される新しいファイルのディレクトリを監視したいと思います。私はincrod
これにそれを使う予定です。
ファイルは絶対に更新してはいけないため、ファイルの変更に反応することに興味はありません。それで、このIN_CREATE
イベントは聞くのに賢明な選択のように見えました。しかし、そのイベントを受信すると(他のプロセスが情報を書き込む前に)空のファイルが残りますか?このイベントを使用する必要がありますかIN_WRITE_CLOSE
?
ベストアンサー1
inotifywait
プロセスの実行中にディレクトリにどのイベントが渡されるかを観察して、イベントがどのように機能するかを確認できます。
$ inotifywait -m .
Setting up watches.
Watches established.
たとえば、touch file
同じディレクトリで実行した後:
$ inotifywait -m .
Setting up watches.
Watches established.
./ CREATE file
./ OPEN file
./ ATTRIB file
./ CLOSE_WRITE,CLOSE file
期待どおりにファイルの作成とクローズの間に遅延があるため、CREATEイベント後に空のファイルが取得されます。実行後に何が起こるかを観察します。
from time import sleep
with open("somefile", 'w') as somefile:
sleep(15)
somefile.write("...")
したがって、CLOSE_WRITEイベントを使用するのが合理的に見えます。