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.

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.


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.


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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.