CRONTAB(5) | File Formats Manual | CRONTAB(5) |
crontab - Tabellen zum Betrieb von Cron
Eine crontab-Datei enthält Anweisungen für den Daemon cron(8) in der algemeinen Weise: »führe diesen Befehl zu dieser Zeit an diesem Datum aus«. Jeder Benutzer hat seine eigene Crontab. Befehle in diesen übergebenen Crontabs werden unter der Benutzerkennung des Eigentümers der jeweiligen Crontab ausgeführt. Uucp und News werden normalerweise ihre eigenen Crontabs haben, wodurch der explizite Aufruf von su(1) als Teil des Cron-Befehls vermieden wird.
Leere Zeilen und vorangestellte Leerzeichen und Tabulatoren werden ignoriert. Zeilen, deren erstes Zeichen (nach möglichen Leerzeichen) eine Raute (#) ist, sind Kommentare und werden ignoriert. Beachten Sie, dass Kommentare nicht auf den gleichen Zeilen wie Cron-Befehle erlaubt sind, da sie als Teil des Befehls betrachtet werden. Entsprechend sind Kommentare nicht auf der gleichen Zeile wie Zuweisungen der Umgebungsvariablen erlaubt.
Eine aktive Zeile in einer Crontab ist entweder eine Umgebungseinstellung oder ein Cron-Befehl. Eine Umgebungseinstellung hat die folgende Form:
Name = Wert
Dabei ist Leerraum um das Gleichheitszeichen (=) herum optional und alle folgenden und nicht am Anfang stehenden Leerraumzeichen in Wert werden als Teil des Name zugewiesenen Wertes betrachtet. Der Wert kann in einfache oder doppelte (aber zueinander passende) englische Anführungszeichen eingeschlossen werden, um führenden oder abschließenden Leerraum zu erhalten.
Eine Reihe von Umgebungsvariablen werden durch den cron(8)-Daemon automatisch eingerichtet. SHELL wird auf »/bin/sh« gesetzt und LOGNAME und HOME werden aus der /etc/passwd-Zeile des Eigentümers der Crontab gesetzt. HOME und SHELL können durch Einstellungen in der Crontab außer Kraft gesetzt werden; für LOGNAME ist dies nicht möglich.
(Ein weitere Hinweis: die Variable LOGNAME wird auf BSD-Systemen manchmal USER genannt… auf diesen Systemen wird USER auch gesetzt.)
Zusätzlich zu LOGNAME, HOME und SHELL prüft cron(8) auch die Variable MAILTO, falls eine E-Mail als Ergebnis der Ausführung eines Befehls in einer bestimmten Crontab gesendet werden muss. Falls MAILTO definiert (und nicht leer) ist, werden E-Mails an die angegebene Adresse gesendet. Falls MAILTO definiert, aber leer ist (MAILTO=""), wird keine E-Mail gesendet. Diese Option ist nützlich, falls Sie »/bin/mail« anstatt von »/usr/lib/sendmail« als Ihr E-Mail-Versandprogramm verwenden. Beachten Sie, dass »/bin/mail« keine Aliase unterstützt und UUCP normalerweise seine E-Mail nicht liest. Falls MAILFROM definiert (und nicht leer) ist, wird es als Umschlagsendeadresse verwandt, andernfalls wird »root« genutzt.
Das Format eines Cron-Befehls ist dem V7-Standard sehr ähnlich, mit einer Reihe von aufwärtskompatiblen Erweiterungen. Jede Zeile hat fünf Zeit-und-Datum-Felder, gefolgt von einem Benutzernamen (falls dies die system-Crontab-Datei ist), und gefolgt von einem Befehl. Befehle werden durch cron(8) ausgeführt, wenn die Felder »Minute«, »Stunde« und »Monat des Jahres« mit der aktuellen Zeit übereinstimmen und mindestens eines der zwei »Tag«-Felder (»Tag des Monats« oder »Tag der Woche«) mit der aktuellen Zeit übereinstimmt (siehe nachfolgenden »Hinweis«). cron(8) prüft Cron-Einträge einmal pro Minute. Die Zeit- und Datum-Felder sind folgende:
Ein Feld kann einen Stern (*) enthalten, der immer für »erster-letzter« steht.
Zahlenbereiche sind erlaubt. Bereiche sind zwei durch einen Bindestrich getrennte Zahlen. Der Bereich schließt die angegebenen Zahlen ein. Beispielsweise legt »8-11« für einen »Stunden«-Eintrag die Ausführung zu den Stunden 8, 9, 10 und 11 fest.
Listen sind erlaubt. Eine Liste ist eine durch Kommata getrennte Gruppe von Zahlen (oder Bereichen). Beispiele: »1,2,5,9«, »0-4,8-12«.
Im Zusammenhang mit Bereichen können Schrittwerte verwandt werden. Wird an einen Bereich »/<Zahl>« angehängt, dann legt dies den numerischen Wert für die Schritte durch den Bereich fest. Beispielsweise kann »0-23/2« im Stunden-Feld verwandt werden, um die Ausführung zu jeder zweiten Stunde festzulegen (die Alternative im V7-Standard ist »0,2,4,6,8,10,12,14,16,18,20,22«). Schritte sind auch nach einem Stern erlaubt, falls Sie also »alle zwei Stunden« festlegen möchten, verwenden Sie einfach »*/2«.
Für die Felder »Monat« und »Tag der Woche« können auch englische Namen verwandt werden. Verwenden Sie die ersten drei (englischen) Buchstaben des bestimmten Tages oder Monats (Groß-/Kleinschreibung ist egal). Bereiche oder Listen von Namen sind nicht erlaubt.
Das »sechste« Feld (der Rest der Zeile) legt den auszuführenden Befehl fest. Der gesamte Befehlsanteil der Zeile bis zum Zeilenumbruch oder zum Zeichen »%« wird durch »/bin/sh« oder die durch die Variable SHELL in der Cron-Datei festgelegte Shell ausgeführt. Ein »%«-Zeichen im Befehl wird in einen Zeilenumbruch umgewandelt, außer es wird mit einem Rückwärtsschrägstrich (\) geschützt, und sämtliche Daten nach dem ersten »%« werden dem Befehl als Standardeingabe übergeben.
Hinweis: Der Tag der Ausführung des Befehls kann
über zwei Felder festgelegt werden — Tag des Monats und Tag
der Woche. Falls beide Felder eingeschränkt sind (d.h. nicht mit *
beginnen) wird der Befehl ausgeführt, wenn eines der beiden
Felder auf die aktuelle Zeit passt. Beispielsweise würde
"30 4 1,15 * 5" dazu führen, dass ein Befehl um 16:30 Uhr am
1. und am 15. jedes Monats sowie jeden Freitag ausgeführt wird.
# /bin/sh verwenden, um Befehle auszuführen, unabhängig davon, was /etc/passwd angibt SHELL=/bin/sh # sämtliche Ausgaben an »paul« schicken, unabhängig davon, wessen Crontab dies ist MAILTO=paul # jeden Tag fünf Minuten nach Mitternacht ausführen 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # um 14:15 Uhr am ersten Tag jedes Monats ausführen -- Ausgabe wird an Paul geschickt 15 14 1 * * $HOME/bin/monthly # Wochentags um 22 Uhr ausgeführt, Joe ärgern 0 22 * * 1-5 mail -s "Es ist 22 Uhr, " joe%Joe,%%Wo sind Deine Kinder?% 23 0-23/2 * * * echo "ausgeführt 23 Minuten nach Mitternacht, 2 Uhr, 4 Uhr, …, jeden Tag" 5 4 * * sun echo "ausgeführt um 5 nach 4 Uhr jeden Sonntag" # Einmal alle neun Tage ohne Beachtung von Wochentag, Monat oder Jahr ausführen:: 33 22 * * * expr $(date +s) / 60 / 60 / 24 9 > /dev/null || echo Den Fußboden bohnern.
Bei der Angabe des Tages der Woche werden sowohl Tag 0 als auch Tag 7 als Sonntag betrachtet. BSD und AT&T scheinen sich darüber uneinig zu sein.
Listen und Bereiche können im gleichen Feld simultan existieren. »1-3,7-9« würde von AT&T- und BSD-Cron abgelehnt – sie würden NUR »1-3« oder »7,8,9« sehen wollen.
Bereiche können »Schritte« enthalten, daher ist »1-9/2« identisch zu »1,3,5,7,9«.
Monate oder Tage der Woche können durch ihren englischen Namen angegeben werden.
In der Crontab können Umgebungsvariablen gesetzt werden. In BSD und AT&T ist die an Kindprozesse übergebene Umgebung im Prinzip die von /etc/rc.
Die Ausgabe von Befehlen wird an den Eigentümer der Crontab per E-Mail gesandt (BSD kann dies nicht), kann an eine vom Eigentümer verschiedene Person per E-Mail gesandt werden (SysV kann dies nicht) oder diese Funktionalität kann ausgeschaltet werden und es wird überhaupt keine E-Mail gesandt (SysV kann dies auch nicht).
Paul Vixie <paul@vix.com>
Die deutsche Übersetzung dieser Handbuchseite wurde von Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer.
24. Januar 1994 | 4th Berkeley Distribution |