Crontabs und wie man sie richtig benutzt

2009-08-06 - kostaki 3 Kommentare »

Mittlerweile habe ich die Befehle ganz gut drauf, aber es ist noch nicht lange her da musste ich für jeden Crontab oder Cronjob nen Manual suchen. Welche Reihenfolge war das noch gleich? Wie lässt man es jede Minute ausführen? Und so weiter. Gelegentlich wurde auch mal ein Script das 1 mal pro Stunde laufen sollte jede Minute ausgeführt. Das musste ich schmerzhaft lernen. Hier also die Basics zum nachschlagen.

$ /etc/crontab #gehört root Finger weg!
$ /etc/cron.daily/ #diese Ordner sind auch eher was fürs System Finger weg!

Die oben genannten Ordner und die anderen im /etc Ordner natürlich auch werden mit root Rechten ausgeführt. Das wollen wir natürlich nicht also lassen wir einfach die Finger davon. Wenn man schon mal dabei ist kann man auch gleich die Rechte für /etc/crontab auf 600 setzen!
Wir als User können mit unseren eigenen Crontab Dateien rumspielen und man muss nicht mal wissen wo die liegen! Falls doch hier liegen sie.

$ /var/spool/cron/crontabs/ #user crontab Ordner

Crontabs sind einfache Textdateien, aber wir müssen und sollten sie nicht einfach im Editor öffnen, sondern die mitgelieferten Befehle benutzen:

$ crontab -l #Zeigt den Inhalt des eigenen Crontabs an (wenn es den eins gibt)
$ crontab -e #Öffnet das eigene Crontab zum bearbeiten
$ crontab -r #löscht das eigene Crontab
$ crontab -u user {-e | -l | - r} #das Usercrontab wird editiert, angezeigt, gelöscht

Ein Crontab hat wenn man Glück hat eine Überschrift die einem die Reihenfolge der Parameter verrät. (# m h dom mon dow command)

Minute 0-59
Stunde 0-23
Tag-des-Monats 1-31
Monat 1-12
Wochentag 0-7

Ein Feld kann auch ein Stern (*) sein. Das steht dann für immer.

Zahlenbereiche: 8-11 in "Stunde" bewirkt die Ausführung um 8, 9, 10, 11 Uhr.
Listen: "1,2,5,9", "0-4,8-2" Nur zu den angegebenen Werten ausführen
Schrittwerte: "0,2,4,6,8,10,12,14,16,18,20,22" kann man auch mit "*/2" erreichen

Standardmäßig wird immer eine interne Mail mit dem Output des Crontabs verschickt. Will man dies unterbinden kann man das Crontab einfach keine Ausgaben machen lassen oder die Ausgabe umleiten.

0 * * * * /bin/ls >/dev/null 2&>1

Hier der Inhalt des Standard crontabs von Debian (die Befehle habe ich ein bisschen gekürzt). Hier sieht man sehr gut die stündlichen, täglichen, wöchentlichen und monatlichen Aufrufe.

# m h dom mon dow user command
17 * * * * /etc/cron.hourly #stündlich um 17 Minuten nach um
25 6 * * * /etc/cron.daily #täglich um 6 Uhr 25
47 6 * * 7 /etc/cron.weekly #wöchentlich am Sonntag um 6 Uhr 47
52 6 1 * * /etc/cron.monthly #monatlich am ersten des Monats um 6 Uhr 52

Wenn ich Zeit habe poste ich noch ein paar weitere Beispiele.

Ähnliche Artikel

  1. 3 Kommentare

  2. traxxus
    schrieb am 23.04.2010 um 14:58 Uhr

    Tolles Tut. Kurz und trotzdem einfacher nachzuvollziehen als all die mühsamen und langen Tuts im Netz.

    Thx!

  3. fraginator
    schrieb am 05.10.2010 um 11:12 Uhr

    Wochentag 0-7 macht ja keinen Sinn, wofür steht dann die 0 bzw. die 7, da es ein Tag zu viel wäre?

  4. kostaki
    schrieb am 05.10.2010 um 12:27 Uhr

    Soweit ich weiß, geht 0 und 7 für Sonntag.

Kommentar schreiben

*

*