incronのIN_CREATEイベントのために空のファイルが提供されますか?

incronのIN_CREATEイベントのために空のファイルが提供されますか?

別のプロセスで作成される新しいファイルのディレクトリを監視したいと思います。私は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イベントを使用するのが合理的に見えます。

おすすめ記事