wie man einen Trigger auf ein Verzeichnis legt

25

Ich habe ein Skript, das ein Verzeichnis durchsucht und die darin enthaltenen Dateien pflegt. Ein anderer Prozess erstellt die Dateien im Verzeichnis (10 - 30 Dateien pro Tag).

Das Skript wird über einen täglichen Cron-Job aufgerufen. Ich muss das Skript für ein Ereignis auslösen (jedes Mal, wenn eine neue Datei im Verzeichnis erstellt wird). Ich bevorzuge dies, anstatt die Häufigkeit des Cron-Jobs zu erhöhen.

Wie kann ich das machen? Gibt es einen Befehl oder ein Programm zum Installieren?

Vielen Dank im Voraus für jede Hilfe.

Albert Green
quelle

Antworten:

23

Inoticoming

Inoticoming ist ein Daemon, der ein Verzeichnis mit dem inotify-Framework von Linux überwacht und Aktionen auslöst, sobald Dateien mit bestimmten Namen dort abgelegt werden.

Zum Beispiel kann es verwendet werden, um auf .changes-Dateien zu warten, die in ein Verzeichnis hochgeladen wurden, und reprepro aufzurufen, um sie in Ihr Repository zu kopieren.

Inkron

incron ist ein "inotify cron" -System. Es funktioniert wie das normale Cron, wird jedoch von Dateisystemereignissen anstelle von Zeitereignissen gesteuert. Dieses Paket enthält zwei Programme, einen Daemon namens "incrond" (analog zu crond) und einen Tabellenmanipulator "incrontab" (wie "crontab").

incron verwendet den Linux-Kernel für Inotify-Systemaufrufe.

wie cron kann jeder benutzer seine eigenen incron-tabellen bearbeiten.

Florian Diesch
quelle
2
Könnten Sie ein Beispiel geben? Links zu Manualseiten sind auch willkommen, ich konnte die nicht finden incron, die inoticomingist da .
Lekensteyn
Incron finden Sie auf den Hilfeseiten von incrond, incrontab und incron.conf
Florian Diesch
2
Ich habe Ihre Antwort so bearbeitet, dass ich sie sehen wollte. Ich habe es aus den
Paketbeschreibungen
4

Es gibt auch ein kleines Programm namens iwatch- siehe die Manpage (diese Seite ist für Ubuntu präzise (12.04), es hat Links zu anderen Ubuntu-Versionen).

iwatch kann Ordner rekursiv überwachen (dh auch Unterordner) und E-Mails als Reaktion auf Datei- / Verzeichnisereignisse senden.

drevicko
quelle
3

Ein weiteres nützliches Hilfsprogramm ist fileschanged( man page here ), mit dem Dateisystemereignisse für ausgewählte Dateien oder Verzeichnisse überwacht werden können, z. B. der folgende Befehl

fileschanged -s created -t1 $PWD

sollte das aktuelle Verzeichnis auf stdoutDateierstellungsereignisse überwachen und den Namen der erstellten Datei mit einer Zeitüberschreitung von 1 Sekunde schreiben.

fileschangedkann Ordner rekursiv überwachen (wie iwatchin einer anderen Antwort angegeben), im Gegensatz zu incronund inoticoming.

Enzotib
quelle
2

inotify Mann Seite befindet sich dort

Wenn Sie Python-Skripte bevorzugen, können Sie Pyinotify verwenden

Pascal
quelle