Befehl watch, um über neu erstellte Dateien unter Linux zu benachrichtigen
Wie ändere ich den folgenden Befehl, um beim Erstellen einer neuen Datei in / usr / local / mydir / durch den Linux-Benutzer John zu benachrichtigen?
watch -d 'ls -l /usr/local/mydir/ | fgrep john'
dh ich möchte kontinuierlich ein anderes Skript überwachen und aufrufen, wenn eine neue Datei in / usr / local / mydir / erstellt wird.
Wie in der Produktion kann ich kein Werkzeug anstelle eines Shell-Skripts verwenden. Kann mir also mit der Shell-Scripting-Lösung helfen?
Antworten:
Anstatt ständig ein Verzeichnis auf diese Weise abzurufen, versuchen Sie möglicherweise
inotify
, das für diesen Zweck entwickelte Subsystem zu verwenden. Informationen zu User Space-Tools finden Sie unterinotify-tools
.quelle
inotify
Der Vorschlag von SvenW ist hierfür eine ausgezeichnete Wahl.Nur um anders zu sein: Eine alternative, vollständigere Möglichkeit für diese Art von Dingen ist die Verwendung des Kernel-Audit-Subsystems und
auditd
. Installieren Sieauditd
es einfach, wenn es noch nicht installiert ist, und verwenden Sie es dannauditctl
in Ihrem Fallwürdest du.
Dann können Sie einen Bericht erstellen und ein sehr detailliertes Protokoll darüber anzeigen, was wann passiert ist:
Dies führt zu ähnlichen Ergebnissen:
quelle
Wenn Sie darauf bestehen, nur Standardwerkzeuge zu verwenden, kann ein Skript wie das folgende hilfreich sein:
Ersetzen Sie die
echo
Zeile durch die gewünschte Aktion und entfernen Sie dieexit
Zeile, wenn Sie dieses Skript kontinuierlich ausführen möchten.Hinweis: Dies wirkt sich auf jede Änderung der Verzeichnisliste aus, auch wenn Dateien nur aktualisiert und nicht hinzugefügt werden.
quelle