In Linux können Tasks automatisch innerhalb eines bestimmten Zeitraums, zu einem bestimmten Zeitpunkt oder wenn die Systemlast unterhalb eines bestimmten Wertes liegt, ausgeführt werden. Red Hat Linux ist so vorkonfiguriert, dass wichtige Systemtasks ausgeführt werden, um Ihr System stets auf dem neuesten Stand zu halten. So wird zum Beispiel die slocate-Datenbank, die von dem Befehl locate verwendet wird, täglich aktualisiert. Ein Systemadministrator kann automatisierte Tasks zum Durchführen von regelmäßigen Backups, zur Systemüberwachung, zum Ausführen von benutzerdefinierten Skripten und vielem mehr verwenden.
Red Hat Linux bietet vier automatische Tasks: cron, anacron, at und batch.
Cron ist ein Daemon zum Ausführen wiederkehrender Tasks nach einer festgelegten Kombination aus Zeit, Kalendertag, Monat, Wochentag und Woche.
Cron geht davon aus, dass das System kontinuierlich läuft. Ist das System zum Zeitpunkt der Ausführung eines Tasks heruntergefahren, wird dieser Task nicht ausgeführt. Weitere Informationen zum Konfigurieren von Tasks, die auf Zeiträumen und nicht auf exakten Zeiten beruhen, finden Sie unter Abschnitt 28.2. Informationen zum Ausführen einmaliger Tasks finden Sie unter Abschnitt 28.3.
Für die Verwendung von Cron muss das RPM-Paket vixie-cron installiert sein und der crond Service laufen. Mit dem Befehl rpm -q vixie-cron können Sie feststellen, ob das Paket installiert ist. Um festzustellen, ob der Dienst ausgeführt wird verwenden Sie den Befehl /sbin/service crond status.
Die Hauptkonfigurationsdatei für Cron /etc/crontab enthält die folgenden Zeilen:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly |
Die ersten vier Zeilen sind Variablen, die zum Konfigurieren der Umgebung verwendet werden, in der die Cron-Tasks ausgeführt werden. Der Wert der Variable SHELL teilt dem System mit, welche Shell-Umgebung zu verwenden ist (hier zum Beispiel Bash-Shell) Die Variable PATH definiert den zum Ausführen der Befehle verwendeten Pfad. Die Ausgabe der Cron-Tasks werden per E-Mail an den Benutzernamen gesendet, der mit Hilfe der Variable MAILTO definiert wurde. Wurde die Variable MAILTO als leere Zeichenfolge (MAILTO="") definiert, kann die E-Mail nicht gesendet werden. Die Variable HOME kann zum Festlegen des home-Verzeichnisses zum Ausführen von Befehlen oder Skripten verwendet werden.
Jede Zeile der Datei /etc/crontab steht für einen Task und hat folgendes Format:
minute hour day month dayofweek command |
minute — jede beliebige ganze Zahl von 0 bis 59
hour — jede beliebige ganze Zahl von 0 bis 23
day — jede beliebige ganze Zahl von 1 bis 31 (wurde ein Monat angegeben, muss der Tag gültig sein)
month — jede beliebige ganze Zahl von 1 bis 12 (oder die englische Abkürzung des Monatsnamens, z.B. Jan, Feb, etc.)
dayofweek — jede beliebige ganze Zahl von 0 bis 7. 0 oder 7 stehen für Sonntag (oder die englische Abkürzung der Wochentage, z.B. Sun, Mon, etc.)
command — der auszuführende Befehl (der Befehl kann entweder ein Befehl wie z.B. ls /proc >> /tmp/proc oder ein Befehl zum Ausführen eines benutzerdefinierten Skriptes sein.)
Für alle oben angegebenen Werte kann der Stern (*) verwendet werden, um alle gültigen Werte anzugeben. Wenn Sie zum Beispiel den Stern für den Monatswert eingeben wird der Befehl jeden Monat innerhalb der Einschränkungen der anderen Werte ausgeführt.
Ein Bindestrich (-) zwischen den ganzen Zahlen gibt den Bereich von ganzen Zahlen an. 1-4 steht zum Beispiel für die ganzen Zahlen 1, 2, 3 und 4.
Durch Kommata getrennte Werte (,) geben eine Liste an. 3, 4, 6, 8 gibt zum Beispiel diese vier ganzen Zahlen an.
Der Schrägstrich (/) kann zum Angeben von Schrittwerten verwendet werden. Der Wert einer ganzen Zahl kann in einem Bereich durch /<Ganze Zahl> übersprungen werden. 0-59/2 kann zum Beispiel zum Definieren bzw. Überspringen jeder weiteren (zweiten) Minute im Feld minute (Minute) verwendet werden. Schrittwerte können auch mit dem Stern verwendet werden. Der Wert */3 kann zum Beispiel im Feld month (Monat) verwendet werden, um den Task in jedem dritten Monat auszuführen.
Alle Zeilen, die mit einem Nummernzeichen (Hash) (#) beginnen, sind Kommentare und werden nicht verarbeitet.
Wie an der Datei /etc/crontab zu erkennen ist, verwendet sie das Skript run-parts um die Skripten in den Verzeichnissen /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly stündlich, täglich, wöchentlich oder monatlich auszuführen. Die Dateien in diesem Verzeichnis sollten Shell-Skripten sein.
Wenn ein Cron-Task nicht stündlich, täglich, wöchentlich oder monatlich ausgeführt werden soll, kann er dem Verzeichnis /etc/cron.d hinzugefügt werden. Alle Dateien in diesem Verzeichnis verwenden die gleiche Syntax wie /etc/crontab. Weitere Beispiele finden Sie unter Beispiel 28-1.
# record the memory usage of the system every monday # at 3:30AM in the file /tmp/meminfo 30 3 * * mon cat /proc/meminfo >> /tmp/meminfo # run custom script the first day of every month at 4:10AM 10 4 1 * * /root/scripts/backup.sh |
Beispiel 28-1. Beispiele für crontabs
Wenn Sie nicht als Root angemeldet sind, können Sie Cron-Tasks mit dem Dienstprogramm crontab konfigurieren. Alle benutzerdefinierten Crontabs werden im Verzeichnis /var/spool/cron gespeichert und mit Hilfe der Benutzernamen der Benutzers ausgeführt, die die jeweiligen Crontabs erstellt haben. Um einen Crontab als Benutzer zu erstellen, melden Sie sich als Benutzer an und geben Sie den Befehl crontab -e ein, um diesen Crontab mit Hilfe des von der Umgebungsvariable VISUAL oder EDITOR definierten Editors zu bearbeiten. Die Datei verwendet das gleiche Format wie /etc/crontab. Wenn die an Crontab vorgenommenen Änderungen gespeichert werden, wird der Crontab entsprechend dem Benutzernamen gespeichert und in die Datei /var/spool/cron/Benutzername geschrieben.
Der Cron-Daemon überprüft minütlich die Datei /etc/crontab, das Verzeichnis /etc/cron.d/ und das Verzeichnis /var/spool/cron auf Änderungen. Werden Änderungen erkannt, werden diese in den Speicher geladen. Wenn also eine Crontab-Datei geändert wird, muss der Daemon nicht erneut gestartet werden.
Die Dateien /etc/cron.allow und /etc/cron.deny schränken den Zugriff auf Cron ein. In jeder Zeile der beiden Zugriffskontroll-Dateien steht ein Benutzername. Es dürfen keine Leerstellen in diesen beiden Dateien verwendet werden. Der Cron-Daemon (crond) muss nicht erneut gestartet werden, wenn die Zugriffskontroll-Dateien geändert wurden. Die Zugriffskontroll-Dateien werden immer dann gelesen, wenn der Benutzer einen Cron-Task hinzuzufügen oder zu löschen versucht.
Der root-Benutzer kann Cron immer verwenden, unabhängig von den in den Zugriffskontroll-Dateien aufgelisteten Benutzernamen.
Wenn die Datei cron.allow vorhanden ist, können nur die in dieser Datei aufgelisteten Benutzer Cron verwenden, und die Datei cron.deny wird ignoriert.
Wenn die Datei cron.allow nicht vorhanden ist, kann keiner der in cron.deny aufgelisteten Benutzer Cron verwenden.
Verwenden Sie zum Starten des Cron-Dienstes den Befehl /sbin/service crond start und zum Beenden den Befehl /sbin/service crond stop. Es wird empfohlen, den Dienst beim Booten zu starten. Weitere Informationen zum automatischen Starten des Cron-Dienstes beim Booten finden Sie unter Kapitel 14.
Zurück | Zum Anfang | Vor |
Zusätzliche Ressourcen | Zum Kapitelanfang | Anacron |