Ich suche nach einer Möglichkeit, eine Datei zu überwachen und ein Ereignis auszulösen, sobald die Datei entfernt wurde. Sobald es entfernt wurde, ersetze / kopiere ich eine neue Datei und starte den Monitor erneut.
Z.B
watch "/tmp/fileToMonitor.txt"
// file deleted by some process
cp new_file "/tmp/fileToMonitor.tx"
// watch file again (repeat same steps..)
Wie kann ich das mit einem Bash-Skript machen? Ist das möglich?
linux
bash
shell-script
user797717
quelle
quelle
auditd
. Recherchiere danach.Antworten:
Sie können dies mit dem
inotifywait
Dienstprogramm (aus deminotify-tools
Paket, mindestens unter Debian) tun .inotifywait
kann Ereignisnamen als Argumente verwenden und warten, bis sie in einer überwachten Datei oder einem überwachten Verzeichnis auftreten, bevor sie zurückgegeben werden. In Ihrem Fall müssten Sie dasdelete_self
Ereignis verwenden, um anzugeben, dass das Programm zurückkehren soll, wenn die überwachte Datei gelöscht wird.Wenn Sie also eine neue Datei kopieren
/tmp/fileToMonitor.txt
möchten, sobald diese entfernt wurde, gehen Sie wie folgt vor:Wenn Sie die Überwachung erneut starten möchten, können Sie dies in eine Schleife einfügen:
quelle
modify
Veranstaltung ist übrigens sehr praktisch, um Ihre Dateien bei Änderungen neu zu kompilieren. Im Allgemeinen benutze ich dieses Tool dafür.