Incron ist kein Ersatz für den guten alten Cron, sondern eine Ergänzung. Während Cron nach einem starren Zeitschema arbeitet, beobachtet Incron Verzeichnisse im Dateisystem und reagiert auf dortige Ereignisse.
| Inhalt |
|---|
| 72 | Upstart Viel versprechender Ansatz, den lahmen Systemstart zu beschleunigen.
78 | Virtual Iron Management für Hardware-gestützte Virtualisierungslösungen. 82 | LPI-Kompendium, Teil 7 Prüfungsthemen dieses Teils sind der Umgang mit Kernelmodulen und das Kompilieren eines Kernels. |
Meine Crontab und ich sind mit den Jahren gemeinsam gewachsen – sie in die Länge, ich in die Breite. Nun wollte ich der alten Dame auch die Möglichkeit einräumen, sich in anderer Richtung zu entwickeln: mit Incron [1]. Die Cron-Ergänzung arbeitet nicht zeit-, sondern ereignisgesteuert, indem sie Verzeichnisse beobachtet und bei plötzlichen Änderungen Kommandos ausführt.
Um mit Incron zu arbeiten, benötige ich einen Kernel ab 2.6.13 mit Inotify-Support und der passenden »inotify.h«-Datei. Üblicherweise liegt sie unter »/usr/include/sys/«, bei einigen Distributionen gibt es zudem eine »inotify-syscalls.h«. Wer mag, ändert im Makefile die Installationspfade, danach reicht »make && make install«. Das Kompilieren beschert mir den Daemon »incrond«, der sich nach dem Start in den Hintergrund verabschiedet, »incrontab« und Manpages.
Pfad, Ereignis, Kommando
Der Aufruf der Incrontab folgt im Kern der Crontab-Syntax: »icrontab -e« öffnet die Tabelle zum Editieren, »icrontab -l« zeigt ihren Inhalt an und »icrontab -r« löscht sie ohne Rückfrage. Jede »icrontab«-Zeile besteht aus drei Einträgen:
Pfad Ereignis Kommando+Parameter
Immer wenn im überwachten »Pfad« ein »Ereignis« passiert, führt Incron »Kommando« aus. Welche Ereignisse es überwachen kann, steht in Tabelle 1. Incron belegt nach einem Ereignis die in Tabelle 2 gelisteten Parameter, die »Kommando« dann für seine Zwecke benutzen darf. Wenn ich die Incrontab ändere, muss ich Incrond das nicht mitteilen, denn er liest die Steuerdatei periodisch ein.
Ein Beispiel: Immer wenn jemand im Verzeichnis »/var/run/daemon/« eine Datei löscht, soll Incrond auch der »/var/log/daemon.log« den Garaus machen. Die passende Zeile in der »incrontab«:
/var/run/daemon IN_DELETE rm /var/log/daemon.log
Fertig. Und die lange Tante Cron kriegt endlich Speck auf die Rippen. (jk)
| Tabelle 1: Erfassbare Ereignisse |
||
|---|---|---|
| Ereignis | Beschreibung | |
| IN_ACCESS | Lesezugriff | |
| IN_MODIFY | Schreibzugriff | |
| IN_ATTRIB | Metadaten (Inode oder Attribut) geändert | |
| IN_CLOSE_WRITE | Datei war zum Schreiben geöffnet und wurde geschlossen |
|
| IN_CLOSE_NOWRITE | Datei war nicht zum Schreiben geöffnet und wurde geschlossen |
|
| IN_CLOSE | »IN_CLOSE_WRITE« oder »IN_CLOSE_NOWRITE« |
|
| IN_OPEN | Datei wurde geöffnet | |
| IN_MOVED_FROM | Datei wurde aus dem Verzeichnis verschoben | |
| IN_MOVED_TO | Datei wurde ins Verzeichnis verschoben | |
| IN_MOVED | »IN_MOVED_FROM« oder »IN_MOVED_TO« | |
| IN_DELETE | Datei wurde gelöscht | |
| IN_DELETE_SELF | Das beobachtete Verzeichnis wurde gelöscht | |
| IN_ALL_EVENTS | Irgendeins der zuvor genannten Ereignisse | |
| Tabelle 2: Kommando-Parameter |
|
|---|---|
| Platzhalter | Beschreibung |
| $@ | Liefert den »Pfad« |
| $# | Name der Datei, die das »Ereignis« ausgelöst hat |
| $% | Zeigt das ausgelöste »Ereignis« |
| $$ | Das Dollarzeichen höchst selbst |
| Infos |
|---|
| [1] Incron: [http://incron.aiken.cz] |
| Der Autor |
|---|
| Charly Kühnast administriert Unix-Betriebssysteme im Rechenzentrum Niederrhein in Moers, insbesondere Firewalls und die DMZ (demilitarisierte Zone). In seiner Freizeit lernt er Japanisch, um endlich die Bedienungsanleitung seiner Mikrowelle lesen zu können. |
Copyright © 2002 Linux New Media AG






