Wie kann ich überwachen, ob eine Datei erstellt wurde?

Wie kann ich überwachen, ob eine Datei erstellt wurde?

Ich muss überwachen, ob beispielsweise Datei/tmp/eineDatei123wurde nach einigen Ereignissen erstellt. Ich habe versucht,inotifywaitaber hier ist ein Problem:

# inotifywait -q -e create /tmp/somefile?*
Couldn't watch /tmp/somefile?*: No such file or directory

da es genau diese Datei nicht gibt, möchte ich wissen, ob sie da sein wird!

Wie kann ich dieses Problem lösen?

UPD: Vielleicht wird es klarer, wenn ich erkläre, was ich erreichen möchte.

Ich muss ein Shell-Skript (sh) mit minimaler CPU-Auslastung schreiben, ungefähr so:

if [ $(inotifywait -e create $SPECIFIC_FILE) ]; then
    blah-blah-blah some actions
fi
# And then similarly monitor if this file was deleted and then do another actions

Ich gehe davon aus, dass die Ausführung des Skripts aminotifywait -e erstellt $SPECIFIC_FILEbis dahin wird $SPECIFIC_FILE nicht erstellt und es wäre besser dann

while [ ! -f $SPECIFIC_FILE ]; do
    blah-blah-blah some actions
    sleep 1
done

Antwort1

Indeminotifywaitüberprüfen Sie dieübergeordnetes Verzeichnis:

/tmp$ inotifywait -e create -d -o /home/me/zz /tmp
/tmp$ touch z1
/tmp$ cat ~/zz
/tmp/ CREATE z1

Sie können das Zeitformat für das Ereignis auch mit dem-timefmtOption. Wenn Sie sofort reagieren möchten, indem Sie beispielsweise eine Skriptdatei ausführen, können Sie Folgendes verwenden:Schwanz -fin der Skriptdatei, um die Protokolldatei kontinuierlich zu überwachen, hier/home/me/zzoder Sie erstellen einBenannte PipeDatei und habeninotifywaitSchreiben Sie hinein, während Ihr Skript daraus liest.

verwandte Informationen