Ich habe etwas Ähnliches mit dem inotifywait
gemacht Werkzeug:
#!/bin/bash
while true; do
inotifywait -e modify,create,delete -r /path/to/your/dir && \
<some command to execute when a file event is recorded>
done
Dadurch werden rekursive Verzeichnisüberwachungen für den gesamten Baum eingerichtet und Sie können einen Befehl ausführen, wenn sich etwas ändert. Wenn Sie nur die Änderungen sehen möchten, können Sie den -m
hinzufügen Flag, um es in den Überwachungsmodus zu versetzen.
Meines Wissens nach gibt es keine andere Möglichkeit, als rekursiv einen inotify
zu setzen jedes Verzeichnis beobachten.
Allerdings werden Ihnen die Dateideskriptoren nicht ausgehen, weil inotify
muss kein fd reservieren, um eine Datei oder ein Verzeichnis zu überwachen (sein Vorgänger, dnotify
, litt unter dieser Einschränkung). inotify
verwendet stattdessen "watch descriptors".
Gemäß der Dokumentation für inotifywatch beträgt das Standardlimit 8192 Überwachungsdeskriptoren, und Sie können es erhöhen, indem Sie den neuen Wert in /proc/sys/fs/inotify/max_user_watches
schreiben .
$ inotifywait -m -r /path/to/your/directory
Dieser Befehl reicht aus, um das Verzeichnis rekursiv auf alle Ereignisse wie Zugriff, Öffnen, Erstellen, Löschen ...
zu überwachen