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.