Incron

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. mit Root-Rechten arbeiten

  4. Einen Editor öffnen

Inhaltsverzeichnis
  1. Installation
  2. Konfiguration
  3. Links

Der Dienst Incrond überwacht (aufgebaut auf inotify) bestimmte Änderungen am Dateisystem und erzeugt Ereignisse, die dann wiederum bestimmte Prozesse oder Scripte ausführen. Dadurch lassen sich zum Beispiel Konfigurationsdateien nach einer Änderung automatisch neu einlesen oder Dateien, die in einem Verzeichnis abgelegt werden, werden daraufhin automatisch durch einen Prozess verarbeitet. Welcher Benutzer die Dateien ablegt, ist für die Überwachung durch Incron nicht relevant.

Installation

Incron kann direkt aus den Quellen installiert werden [1]

Paketliste zum Kopieren:

sudo apt-get install incron 

Oder mit apturl die Pakete installieren. Link: apt://incron

Konfiguration

Damit Incron genutzt werden kann, muss der entsprechende Benutzer dafür die Berechtigung bekommen. Dafür muss dieser Benutzer in der Datei /etc/incron.allow hinterlegt werden[3][4]. Dabei wird pro Benutzername eine Zeile erwartet. Dies gilt auch für root.

Danach lässt sich die Konfigurationstabelle bearbeiten. Für den Benutzer, der gerade eingeloggt ist[2]:

incrontab -e 

Für den Benutzer root:

sudo incrontab -e 

Die Tabelle eines anderen Banutzers lässt sich folgendermaßen bearbeiten:

sudo incrontab -e -u <BENUTZER> 

Jede Zeile der Konfiguration enthält diese Bestandteile:

<OrdnerOderDatei> <Ereignismaske> <Script> <Parameter>

Der Parameter kann dabei weggelassen werden.

Mögliche Ereignismasken
IN_ACCESS Auf eine Datei oder einen Ordner wird lesend zugegriffen.
IN_ATTRIB Metadaten werden geändert (Berechtigungen, Zeitstempel und ähnliches)
IN_CLOSE_WRITE Eine Datei, die zum Schreiben geöffnet war, wird geschlossen.
IN_CLOSE_NOWRITE Eine Datei, die nur zum Lesen geöffnet war, wird geschlossen.
IN_CLOSE Eine geöffnete Datei wird geschlossen.
IN_CREATE In dem beobachteten Ordner wird Datei oder ein Ordner erstellt.
IN_DELETE In dem beobachteten Ordner wird Eine Datei oder ein Ordner gelöscht.
IN_DELETE_SELF Die beobachteten Datei oder der Ordner wird gelöscht.
IN_MODIFY Die beobachtete Datei wird geändert.
IN_MOVE_SELF Die beobachtete Datei oder das beobachtete Verzeichnis wird geändert.
IN_MOVED_FROM Eine Datei oder ein Ordner wird aus dem beobachteten Ordner verschoben.
IN_MOVED_TO Eine Datei oder ein Ordner wird in den beobachteten Ordner verschoben.
IN_MOVE Eine Datei oder ein Ordner wird in den oder aus dem beobachteten Ordner verschoben.
IN_OPEN Eine Datei wird geöffnet.
IN_ALL_EVENTS Irgendein Ereignis
Mögliche Ereignisoptionen (werden ebenso als Maske angegeben)
IN_DONT_FOLLOW Symbolische Links nicht verfolgen
IN_ONESHOT Nur für ein Ereignis beobachten
IN_ONLYDIR Nur beobachten, wenn der Pfad ein Verzeichnis ist
IN_NO_LOOP Wenn ein Ereignis registriert wird, wird die Überwachung pausiert und wieder fortgesetzt, nachdem das gestartete Programm oder Script abgeschlossen wurde (verhindert Endlosschleifen).

Befehlsvariablen für Script und Parameter
$$ Dollarzeichen
$@ Pfad, der überwacht wird
$# Dateiname, der das Ereignis ausgelöst hat
$% Bezeichnung für das Ereignis
$& Eventnummer

Beispiele

Immer, wenn in einem Ordner ein Fehlerbericht abgelegt wird, soll dieser versendet werden. Als Parameter wird der komplette Pfad übergeben, der das Ereignis ausgelöst hat:

/var/application/error IN_CREATE /var/application/scripts/send_error.sh $@/$#

Im folgenden Beispiel wird immer, wenn direkt in /etc eine Konfigurationsänderung durchgeführt wird (Unterordner werden nicht berücksichtigt) wird ein Script aufgerufen zB. um ein Backup abzulegen oder den Administrator zu benachrichtigen. Es wird nur der Name der Datei mitgegeben, die das Ereignis ausgelöst hat.

/etc/ IN_MODIFY,IN_NO_LOOP /root/configänderung.sh $#