Benutzer-Werkzeuge

Webseiten-Werkzeuge


sammlung:crontab

crontab

Um regelmäßig Aufgaben zu erledigen eignet sich das Programm „cron“ am besten.

cron besteht aus folgenden Teilen:

den Dämon corn
der Datei /etc/crontab
dem Verzeichnis /etc/corn.d
den Dateien /etc/cron.allow, /etc/corn.deny (vom User an zu lgen)
den Verzeichnissen /etc/corn.horly/, /etc/cron.daily/, /etc/cron.weekly und /etc/cron.monthly.

dem Verzeichnis /var/spool/cron/corontabs/ mit den dort abgelegten benutzerdefinierten Aufgaben-Dateien.

User cronjobs werden unter /var/spool/cron/crontabs/user_name/ abgelegt. Editor für cornjobs

crontab -e
Auflistung von User cronjobs # crontab -u user_name -l
Löschen von User cronjobs    # crontab -r

Einrichten von cronjobs:

/etc/cron.allow          # Alle User, welche cronjobs Einrichten dürfen.
/etc/cron.deny           # Alle User, welche keine cronjbs Einrichten dürfen.

Ist ein User weder in der einen noch in der anderen Liste, so verweigert das Systen das Einrichten von cronjobs.

Hier ist noch kurz eine Übersicht, wie sich der Cronjob aufbaut

*     *     *     *     *  Befehl der ausgeführt werden soll
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- Wochentag (0 - 7) (Sonntag ist 0 und 7; oder Namen, siehe unten)
|     |     |     +------- Monat (1 - 12)
|     |     +--------- Tag (1 - 31)
|     +----------- Stunde (0 - 23)
+------------- Minute (0 - 59; oder Namen, siehe unten)

Für die Wochentage und die Monate können die drei ersten Buchstaben des englischen Namen benutzt werden, z. B. Sun für Sonntag. Groß-/Kleinschreibung spielt dabei keine Rolle, allerdings sind keine Angaben von Zeiträumen erlaubt, dazu müssen Ziffern verwendet werden.

Angaben von Zeiträumen und Schrittweiten innerhalb dieser Zeiträume sind erlaubt, sofern Ziffern benutzt werden. Setzt man beispielsweise für die Stunde 8-10, wird der Befehl in den Stunden 8, 9 und 10 Uhr ausgeführt. Statt der Schreibweise 8-10 kann auch 8,9,10 geschrieben werden.

Setzt man hingegen */2 wird der Befehl jede zweite Stunde ausgeführt. Beides kann kombiniert werden, so bedeutet 1-9/2 dasselbe wie 1,3,5,7,9.

Man sollte aber bedenken, dass * */2 * * * beispielsweise den Befehl 60 mal (also zu jeder Minute) jede zweite Stunde ausführt.

Zur Vereinfachung können die ersten fünf Felder auch durch eine einzelne Zeichenkette ersetzt werden. Hierfür sind acht Schlüsselwörter definiert:

String Bedeutung cron-Schreibweise
@reboot
@daily einmal pro Tag 0 0 * * *
@midnight einmal pro Tag 0 0 * * *
@hourly einmal pro Stunde 0 * * * *
@weekly einmal pro Woche 0 0 * * 0
@monthly einmal im Monat 0 0 1 * *
@annually einmal im Jahr 0 0 1 1 *
@yearly einmal im Jahr 0 0 1 1 *

Beispiel für cron

Es wird ein script erstrellt um das Datum und Uhrzeit in eine Datei zu schreiben.

1 script erstellen
  vi script-name.sh
  date >> /home/user-name/ziel-datei.txt
  
2 chmod 555 /home/user-name/script-name.sh

3 cron eintrag Erstellen
  crontab -e
  * * * * * /home/user-name/script-name.sh

4 crontab -l 
  * * * * * /home/user-name/script-name.sh
  • Alle Cron Jobs Anzeigen
for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l; done

cron Editor

Wenn man mit verschiedenen Linux Distributionen arbeitet, merkt man sehr schnell das jedes System seine gewissen Eigenheiten hat. So werden auch unterschiedlichste Editoren zum Bearbeiten der Cronjobs (crontab -e) verwendet. Der Editor lässt sich aber ganz einfach ändern. Hierzu muss lediglich die Umgebungsvariable “EDITOR” angepasst werden

export EDITOR=/usr/bin/vi

Damit diese Änderung dauerhaft und auch nach einem Reboot wirksam ist, kann die oben genannte Codezeile global in der Datei /etc/profile oder auf Userebene in der entsprechenden ~/.bashrc verwendet werden. Dann kann bei einem erneuten Erstellen eines Cronjobs kein Problem mehr mit dem falschen Editor auftreten.

Es stehen natürlich neben dem vi auch noch viele andere Editoren zur Verfügung, alle zu nennen wäre jetzt ein bisschen viel, darum hier die wichtigsten (Die Pfade beziehen sich auf Debian und können je nach Distribution abweichen)

export EDITOR=/usr/bin/vim

export EDITOR=/usr/bin/nano

export EDITOR=/usr/bin/pico

export EDITOR=/usr/bin/editor

export EDITOR=/usr/bin/joe

crontab

crontab - wartet crontab Dateien für einzelne User 1)

Syntax

crontab [ -u user ] Datei crontab [ -u user ] { -l | -r | -e }

Beschreibung

crontab ist das Programm, mit dem die Tabellen, die den Cron-Daemon steuern installiert, deinstalliert oder aufgelistet werden können. Jeder User kann seine eigene crontab-Datei besitzen, die - obwohl sie im var-Verzeichnis liegen - nicht dazu gedacht sind, direkt editiert zu werden. Wenn die Datei /etc/cron.allow existiert, muß ein User, der dieses Kommando ausführen will, darin aufgeführt sein. Wenn die Datei /etc/cron.allow nicht existiert, aber dafür die Datei /etc/cron.deny existiert, so darf ein User dort nicht aufgeführt sein, um dieses Kommando auszuführen. Wenn weder die eine, noch die andere Datei existiert, so kann - abhängig von der rechnerspezifischen Konfiguration - entweder nur der Superuser (root) oder alle User das Kommando benutzen.

Wenn die -u Option angegeben wurde, dann spezifiziert sie den Namen des Users, dessen Crontab bearbeitet werden soll. Wenn diese OPtion nicht gesetzt ist, bearbeitet crontab die Datei des Users, der das crontab Kommando ausführt. Wenn dieser User seine Identität mit su(8) gewechselt hatte, so kann das das crontab-Kommando verwirren. In diesem Fall ist es stets vorzuziehen, den gewünschten Usernamen mit der -u Option mit anzugeben.

Die erste Aufrufform dieses Kommandos dient dazu, eine neue crontab-Datei aus der angegebenen Datei (oder der Standard-Eingabe wenn statt der Datei ein - angegeben wurde) anzulegen.

Die -l Option zeigt den Inhalt des aktuellen Crontabs des aufrufenden (oder angegebenen) Users.

Die -r löscht den aktuellen Crontab des aufrufenden (oder angegebenen) Users.

Die -e Option dient dazu, den aktuellen Crontab des aufrufenden (oder angegebenen) Users zu editieren. Der dazu aufgerufene Editor ist der in der Variable VISUAL oder EDITOR definierte (vi). Nachdem der Editor mit Sichern verlassen wurde wird der modifizierte Crontab automatisch installiert.

Siehe auch

crontab(5) , cron(8)

Dateien

/etc/cron.allow
/etc/cron.deny

Standards

Das crontab Kommando ist konform zum IEEE Standard 1003.2-1992 (POSIX).

sammlung/crontab.txt · Zuletzt geändert: von 127.0.0.1