Cron

Aus

Cron

Der Cron-Daemon ermöglicht es, Scripte und Programme zu genau definierten Zeitpunkten zu starten und ist auf der DS bereits vorinstalliert.

Eine weit verbreitete Anwendung ist das Backup mit rsync oder rsnapshot, deshalb am Ende ein entsprechendes Beispiel.

Cron konfigurieren

Cron wird konfiguriert durch die Datei crontab, die für jeden Benutzer einzeln angelegt werden kann. Dazu dient der Befehlt crontab -e.

Bei der DS ist das etwas anders, hier gibt es die /etc/crontab, welche nur root bearbeiten darf. Dazu nutzt man am besten das 3rd-Party-App cronjobs oder bearbeitet die Datei direkt mit einem Editor, z. B. dem bereits installierten Vi.

Aufbau von /etc/crontab

Die Datei besteht aus sieben Spalten. In der ersten, auskommentierten, stehen die Spaltenköpfe:

#minute hour    mday    month   wday    who     command
|	|	|	|	|	|	|
|	|	|	|	|	|	+--Programm oder Script
|	|	|	|	|	+----------user, der Ausführung startet
|	|	|	|	+------------------Wochentag (0-7 oder Namen)
|	|	|	|			   - 0 & 7 stehen für Sonntag
|	|	|	+--------------------------Monat im Jahr (1-12)
|	|	+----------------------------------Tag des Monats (1-31 oder Namen)
|	+------------------------------------------Stunde (0-23
+--------------------------------------------------Minute (0-59)

Achtung: Die Spalten dürfen nur durch Tab getrennt werden!

Die Änderungen in /etc/crontab werden erst gültig, wenn man crond neu gestartet hat:

/usr/syno/etc/rc.d/S04crond.sh stop
/usr/syno/etc/rc.d/S04crond.sh start

Die Spalten und enthalten entweder einen Wert oder '*' (Asterisk/Sternchen). In einigen Dokumentationen steht, die crontab müsse mit einer Leerzeile oder einem Kommentar enden, dies scheint für die DS nicht zu stimmen.

Das Programm oder Script sollte mit dem kompletten Pfad angegeben werden, da cron nicht zwangsläufig die PATH-Variable des users benutzt.

Der Zeitpunkt, zu dem das Script oder Programm gestartet werden soll, wird durch die Uhrzeit, eingetragen in minute und hour und das Intervall, eingetragen in die Spalte für Tag oder Monat, definiert.

Folgende Möglichkeiten gibt es bei der Steuerung:

  1. Uhrzeit: in der Spalte hour eine '10' und in minute eine '30' startet das Script um 10:30.
  2. einzelne Zeitpunkte: In der Spalte hour '10,12,14' und in minute '00' startet das Script um 10:00, 12:00 und 14:00.
  3. Zeitspannen: In der Spalte hour '12-16' und in minute '15' startet das Script um 12:15, 13:15, 14:15, 15:15 und 16:15.
  4. Intervalle: In der Spalte hour '*/6' und minute '00' startet das Script alle 6 Stunden, also um 0:00, 6:00, 12:00 und 18:00.
  5. Kombinationen: in der Spalte hour '12-18/2' und minute '00' startet das Script alle zwei Stunden zwischen 12:00 und 18:00, also um 12:00, 14:00, 16:00 und 18:00.
  6. Namen: es können auch die ersten drei Buchstaben der engl. Namen der Wochentage und Monate benutzt werden, wobei die Groß-/Kleinschreibung keine Rolle spielt. Zeiträume sind allerdings nur mit Ziffern möglich.
  7. special time specifications: die ersten fünf Spalten können auch durch bestimmte Schlüsselwörter ersetzt werden:
    1. '@reboot', startet einmal nach dem startup
    2. '@yearly', startet einmal im Jahr, das entspricht '0 0 1 1 *'
    3. '@annually', startet einmal im Jahr, das entspricht '0 0 1 1 *'
    4. '@monthly', startet einmal im Monat, das entspricht '0 0 1 * *'
    5. '@weekly', startet einmal in der Woche, das entspricht '0 0 * * 0'
    6. '@daily', startet einmal am Tag, das entspricht '0 0 * * *'
    7. '@hourly, startet stündlich, das entspricht '0 * * * *'

Beispiel Backup-Steuerung

Es folgt ein Beispiel für die Steuerung eines Backups mit rsnapshot durch cron:

#minute hour    mday    month   wday    who     command
30      10-20   *       *       *       root    /opt/bin/rsnapshot hourly
30      23      *       *       *       root    /opt/bin/rsnapshot daily
30      22      *       *       5       root    /opt/bin/rsnapshot weekly
30      21      1       *       *       root    /opt/bin/rsnapshot monthly

Hier wird rsnapshot hourly jeden Tag um 10:30, 11:30 usw., zuletzt um 20:30 gestartet, rsnapshot daily wird jeden Tag um 23:30, rsnapshot weekly jede Woche am Freitag um 22:30 und rsnapshot monthly jeden ersten des Monats um 21:30 ausgeführt.

siehe auch