Incron
Version vom 14. November 2011, 12:55 Uhr von 192.168.250.1 (Diskussion)
incron ist ein auf inotify basierender cron daemon. Anstelle von Zeit werden die Aktionen von Dateisystem-Events ausgelöst.
Installation
apt-get install incron
Job Definition
Job Anweisungen haben das Format:
<Pfad> <Event-Maske> <Befehl>
Events
Folgende Standard Masken sind definiert und könne als Event ausgelöst werden
- IN_ACCESS
- Auf datei wurde (lesend) zugegriffen
- IN_ATTRIB
- Metadaten wie Dateirechte, Zeitstempel etc. wurden geändert.
- IN_CLOSE_WRITE
- Zum schreiben geöffnete Datei wurde geschlossen
- IN_CLOSE_NOWRITE
- Geöffnete (nicht zum schreiben) Datei wurde geschlossen
- IN_OPEN
- Datei wurde geöffnet
- IN_MODIFY
- Datei wurde verändert
- IN_CREATE
- Es wurde eine Datei/Ordner im überwachten Verzeichnis erstellt
- IN_DELETE
- Es wurde eine Datei/Ordner im überwachten Verzeichnis gelöscht
- IN_DELETE_SELF
- Überwachte Datei/Ordner wurde gelöscht
- IN_MOVE_SELF
- Überwachte Datei/Ordner wurde verschoben
- IN_MOVED_FROM
- Datei wurde aus überwachtem Ordner verschoben
- IN_MOVED_TO
- Datei wurde in überwachtem Ordner verschoben
Hinzukommen Event-Masken zur Definition
- IN_ALL_EVENTS
- Erspart manuelle Liste mit allen Events
- IN_DONT_FOLLOW
- Löse Pfade von symbolischen Links nicht auf
- IN_ONESHOT
- Über wache den Pfad für nur einen Event lang
- IN_ONLYDIR
- Überwache den Pfad nur, wenn es ein Verzeichnis ist
Desweiteren gibt es einen Event, welcher nicht in der inotify Bibliothek enthalten ist
- IN_NO_LOOP
- Unterbreche Überwachung, bis aktueller Event vollständig abgearbeitet ist (bis sein Kindprozess terminiert)
Befehle
In der Befehlsangabe können folgende Variablen genutzt werden
$$ - Dollarzeichen $@ - Der überwachte Dateisystempfad $# - Name der Datei, welche den Event auslöste $% - Der Event (Text) $& - Der Event (Nummer)
Beispiele
Sobald in /var/mail
eine Datei geändert wurde soll der Befehl asd
mit dem vollen Dateipfad aufgerufen werden.
/var/mail IN_CLOSE_WRITE asd $@/$#
Schreibe einen Log-Eintrag sobalt eine Datei im Verzeichniss /data geändert, erstellt, gelöscht oder verschoben wird.
/data IN_MODIFY,IN_CREATE,IN_DELETE,IN_MOVED_FROM,IN_MOVED_TO echo "$(date) file: $# in: $@ event: $%" >> /var/log/mylog.log
Schreibe eine Mail sobald in /var/log/error.log Meldungen geschrieben werden.
/var/log/error.log IN_MODIFY tail -n 1 $% | mail -s "an error occured" support@example.com