Sie werden feststellen, dass es viele Aufgaben gibt, die regelmäßig auf Ihrem Linux-System ausgeführt werden müssen. Beispielsweise müssen Sie möglicherweise eine Datenbank aktualisieren oder Benutzerdaten im /home/-Verzeichnis sichern. Während Sie diese Aufgaben manuell ausführen könnten, wäre es effizienter (und zuverlässiger), wenn Sie das Linux-System so konfigurieren würden, dass es sie automatisch für Sie ausführt.
Eine Möglichkeit, dies zu tun, ist die Verwendung von cron. Der Cron-Daemon (/usr/sbin/cron) ermöglicht es Ihnen, Jobs zu planen, die regelmäßig für Sie ausgeführt werden.
crontab-Dateisyntax
Der Cron-Daemon wird standardmäßig auf Linux-Systemen installiert und aktiviert. Einmal pro Minute wird überprüft, ob für die aktuelle Zeit Jobs definiert wurden. Der Cron-Daemon verwendet eine Datei namens crontab die eine Liste von Jobs enthält und wann sie ausgeführt werden sollen. Für das gesamte Linux-System existiert eine crontab-Datei. Jeder Benutzer des Systems kann auch seine eigene crontab-Datei definieren.
Jede Zeile in einer Crontab-Datei definiert einen einzelnen Cron-Job. Die ersten fünf Felder (getrennt durch Leerzeichen – Leerzeichen oder Tabulatoren) definieren, wann
der Cronjob ausgeführt werden soll. Sie verwenden die folgende Syntax:
Feldnummer | Feldbezeichnung | Bereich |
---|---|---|
1 | Minuten | 0-59 |
2 | Stunden | 0-23 |
3 | Tag des Monats | 1-31 |
4 | Monat | 1-12 |
5 | Wochentag | 0-7 |
In einer Benutzer-crontab-Datei geben die nachfolgenden Felder (Feld sechs und höher) den auszuführenden Befehl und seine Option, falls vorhanden, an. In einer System-Crontab-Datei gibt das sechste Feld den Benutzer an, der verwendet werden soll, um den Befehl in den verbleibenden Feldern (ab Feld sieben) auszuführen.
Der Cron-Daemon kann jeden Befehl oder jedes Shell-Skript ausführen. Es ist jedoch keine Benutzerinteraktion verfügbar, wenn der Befehl oder das Shell-Skript ausgeführt wird.
Im Folgenden finden Sie Richtlinien zum Konfigurieren dieser Felder:
- Wenn Sie möchten, dass ein Job jede Minute, Stunde, Tag oder Monat ausgeführt wird, geben Sie ein Sternchen (*) in das entsprechende Feld ein.
- Sie können mehrere Einträge in einem Feld in einer durch Kommas getrennten Liste aufnehmen.
- Sie können einen Bereich angeben, dessen Anfangs- und Endwerte durch einen Bindestrich getrennt sind.
- Sie können Zeitschritte mit /n konfigurieren (wobei n die Größe des Schritts darstellt).
- Sie können Monate und Wochentage mit den ersten drei Buchstaben ihrer Namen angeben (z. B. MON, TUE, JAN, FEB). Bei den Buchstaben wird die Groß-/Kleinschreibung nicht beachtet. Wenn Sie jedoch Buchstaben verwenden, können Sie keine Bereiche oder Listen verwenden.
- Zahlen, die die Wochentage darstellen, beginnen bei 0 für Sonntag und laufen fortlaufend durch die gesamte Woche, wobei 7 wieder Sonntag darstellt. Beispiel:3 ist Mittwoch und 6 Samstag.
Benutzerjobs definieren
Benutzer erstellen und verwalten ihre eigenen crontab-Dateien mit dem crontab-Befehl. Die folgenden Optionen können mit dem crontab-Befehl verwendet werden:
Option | Beschreibung |
---|---|
crontab -e | Erstellt oder bearbeitet Jobs. Der vi-Editor wird verwendet. |
crontab-Datei | Ersetzt jede vorhandene Crontab-Datei für den aktuellen Benutzer durch die angegebene Datei, vorausgesetzt, die Datei enthält eine Liste von Jobs mit der richtigen Syntax. |
crontab -l | Zeigt aktuelle Jobs an. |
crontab -r | Löscht alle Jobs. |
Angenommen, Sie möchten einen Cron-Job definieren, der den Inhalt des Home-Verzeichnisses Ihres Benutzers jede Nacht um 17:05 Uhr auf ein externes USB-Laufwerk kopiert, das in /media/USB eingebunden ist. Sie müssten Folgendes tun:
1. Öffnen Sie eine Terminalsitzung.
2. Geben Sie am Shell-Prompt „crontab -e“ ein.
# crontab -e
Wenn Sie zum ersten Mal einen Cron-Job definieren, wird für Ihren Benutzer eine leere Crontab-Datei erstellt.
3. Drücken Sie die Taste I und geben Sie dann Folgendes ein:
5 17 * * * cp ~/* /media/USB
4. Drücken Sie Esc und geben Sie dann „:wq!“ ein.
5. Sie können festlegen, welche Benutzer Cronjobs erstellen dürfen und welche nicht, indem Sie die folgenden beiden Dateien erstellen:
- /etc/cron.allow :Benutzer, die in dieser Datei aufgeführt sind, können Cron-Jobs erstellen.
- /etc/cron.deny :Benutzer, die nicht in dieser Datei aufgeführt sind, können Cronjobs erstellen.
Wenn die Datei /etc/cron.allow existiert, ist sie die einzige ausgewertete Datei; /etc/cron.deny wird in dieser Situation ignoriert. Wenn keine dieser Dateien existiert, darf nur der Root-Benutzer Benutzer-Cron-Jobs definieren.