Dateien und Verzeichnisse überwachen mit incron

Kategorie: Allgemein

Der Dienst incron funktioniert nach einem ähnlichen Prinzip wie der cron-Daemon, allerdings kann man incron dazu verwenden, Dateien oder Verzeichnisse zu überwachen und bei bestimmten Ereignissen eine Aktion auszuführen.
 
Ein praktisches Beispiel:
Man möchte, dass der Webserver automatisch neu gestartet wird, sobald sich eine der Konfigurationsdateien in /etc/apache2/ ändert.
 
 
Zunächst zur Installation:
 
Auf Debian oder Ubuntu erledigt man die Installation ganz einfach mit:
apt-get install incron
Auf Fedora, CentOS oder RedHat:
yum install incron
(jeweils als root)
 
 
Berechtigungen:
 
Standardmäßig darf bei einer Debian-Installation kein Benutzer incron benutzen. Die Berechtigungen werden über die beiden Dateien
/etc/incron.allow
/etc/incron.deny
gesteuert.
 
Ähnlich wie bei cron (crontab) gibt es hier den Befehl incrontab.
incrontab -l listet die aktuellen Einträge auf
incrontab -e ermöglicht das Bearbeiten der Einträge
 
Steht der Benutzer, der den Befehl ausführt nicht in der Datei /etc/incron.allow, führen diese zu einer Fehlermeldung.
Möchte man z.B. dass der Benutzer root incron benutzen darf, trägt man einfach nur den Benutzernamen in die Datei /etc/incron.allow ein.
 
 
Incrontab aktualisieren:
 
Mit incrontab -e kann man jetzt die entspr. Dateien/Verzeichnisse und die dazughörigen Events und Aktionen eintragen.
 
Ich nehme hier das praktische Bsp. (siehe oben):
/etc/apache2/ IN_CLOSE_WRITE /etc/init.d/apache2 reload
Es können Verzeichnisse und Dateien gleichermaßen eingetragen werden.
Die Einträge sind immer in der Form: Datei/Verzeichnis Event Befehl
 
D.h. in diesem Bsp. wird der Webserver neu gestartet, sobald eine Datei im Verzeichnis /etc/apache2/ gespeichert wird.
 
 
Die Events:
 
IN_ACCESS Wenn die datei gelesen wird
IN_ATTRIB Wenn Berechtigungen oder andere Attribute der Datei geändert werden
IN_CLOSE_WRITE Wenn die Datei zum Schreiben geöffnet war und geschlossen wird
IN_CLOSE_NOWRITE Wenn die Datei zum Lesen geöffnet war und geschlossen wird
IN_CREATE Wenn eine Datei im beobachteten Verzeichnis erstellt wird
IN_DELETE Wenn eine Datei im beobachteten Verzeichnis gelöscht wird
IN_DELETE_SELF Wenn das beobachtete Verzeichnis bzw. die Datei selbst gelöscht wird
IN_MODIFY Wenn die Datei oder das Verzeichnis modfiziert wird
IN_MOVE_SELF Wenn das beobachtete Verzeichnis bzw. die Datei verschoben wird
IN_MOVED_FROM
Wenn ein Verzeichnis bzw. eine Datei aus dem beobachteten Verzeichnis verschoben wird
IN_MOVED_TO Wenn ein Verzeichnis bzw. eine Datei in das beobachtete Verzeichnis verschoben wird
IN_OPEN Wenn eine Datei geöffnet wird
 
 
 
Test:
 
Um das ganze zu testen, speichert man den Cron-Tab ab und beendet den Editor (i.d.R. vi oder nano).
Sobald man jetzt eine Datei in diesem Verzeichnis speichert sollte in /var/log/syslog bzw. in /var/log/messages je nach System ein Eintrag wie dieser zu finden sein:
Mar 29 12:34:39 h1643630 incrond[21786]: (root) CMD (/etc/init.d/apache2 reload)

© 2008-2012 www.cschramm.net