Incron
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Der Dienst Incrond überwacht (aufgebaut auf inotify) bestimmte Änderungen am Dateisystem und erzeugt Ereignisse, die dann wiederum bestimmte Prozesse oder Skripte 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]
incron (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install incron
Oder mit apturl 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 Skript 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), ein Script aufgerufen, z.B. 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 $#
Links¶