Task Management¶
In diesem Kapitel erfahren Sie, wie Sie geplante Aufgaben verwalten.
Ziele: In diesem Kapitel lernen zukünftige Linux-Administratoren Folgendes:
wie GNU/Linux die Aufgabenplanung implementiert;
die Verwendung von cron
auf bestimmte Benutzer beschränken;
Aufgaben planen.
crontab, crond, scheduling, linux
Vorwissen:
Komplexität:
Lesezeit: 17 Minuten
Allgemeines¶
Die Zeitplanung der Aufgaben wird mit dem cron
Tool verwaltet. Es ermöglicht die periodische Ausführung von Aufgaben.
Es ist dem Administrator für Systemaufgaben vorbehalten, kann aber von normalen Benutzern für Aufgaben oder Skripte verwendet werden, auf die sie selber Zugriff haben. Um auf das cron
Tool zuzugreifen, verwenden wir: crontab
.
Der cron
Dienst wird verwendet für:
- Wiederholte Verwaltungsvorgänge;
- Sicherungen;
- Überwachung der Systemaktivität;
- Programmausführung.
Der Name crontab
steht für cron-Tabelle, kann aber als Task-Planungstabelle angesehen werden.
Warnhinweis
Um einen Zeitplan mit crontab einzurichten, muss die richtige Systemzeit eingestellt werden.
Wie der Dienst funktioniert¶
Der cron
-Dienst wird durch einen crond
-Daemon im Speicher ausgeführt.
Um seinen Status zu überprüfen:
[root] # systemctl status crond
Hinweis
Wenn der crond
-Daemon nicht läuft, müssen Sie ihn manuell initialisieren und/oder beim Start automatisch starten. Selbst wenn Aufgaben geplant sind, werden sie nicht gestartet.
Initialisierung des crond
-Daemons, Syntax:
[root]# systemctl {status|start|restart|stop} crond
Initialisierung des crond
-Daemons beim Start:
[root]# systemctl enable crond
Sicherheit¶
Um einen Zeitplan zu implementieren, muss ein Benutzer die Berechtigung haben, den cron
-Dienst zu verwenden.
Diese Berechtigung hängt von den Informationen ab, die in den folgenden Dateien enthalten sind:
/etc/cron.allow
/etc/cron.deny
Warnhinweis
Wenn keine der beiden Dateien vorhanden ist, können alle Benutzer cron
verwenden.
Die cron.allow
und cron.deny
Dateien¶
Datei /etc/cron.allow
Nur Benutzer, die in dieser Datei enthalten sind, dürfen cron
verwenden.
Wenn die Datei existiert und leer ist, können keine Benutzer cron
verwenden.
Warnhinweis
Wenn cron.allow
vorhanden ist, wird cron.deny
ignoriert.
Datei /etc/cron.deny
Benutzer in dieser Datei dürfen cron
nicht verwenden.
Wenn es leer ist, können alle Benutzer cron
verwenden.
Standardmäßig existiert /etc/cron.deny
und ist leer und /etc/cron.allow
existiert nicht.
Einen Benutzer zulassen¶
Nur user1 kann cron
verwenden.
[root]# vi /etc/cron.allow
user1
Benutzer verbieten¶
Nur user2 kann cron
nicht verwenden.
[root]# vi /etc/cron.deny
user2
cron.allow
darf nicht vorhanden sein.
Aufgabenplanung - tasks scheduling¶
Wenn ein Benutzer eine Aufgabe plant, wird eine Datei mit seinem Namen unter /var/spool/cron/
erstellt.
Diese Datei enthält alle Informationen, die der crond
über alle von diesem Benutzer erstellten Aufgaben wissen muss, die Befehle oder Programme zum Ausführen und wann sie ausgeführt werden sollen (Stunde, Minute, Tag, ...).
Der crontab
Befehl¶
Der crontab
Befehl wird verwendet, um die schedule-Datei zu verwalten.
crontab [-u user] [-e | -l | -r]
Beispiel:
[root]# crontab -u user1 -e
Option | Beschreibung |
---|---|
-e |
Bearbeitet die schedule-Datei mit vi |
-l |
Zeigt den Inhalt der schedule-Datei an |
-u |
Name des Benutzers, dessen schedule-Datei manipuliert werden soll |
-r |
Schedule-Datei löschen |
Warnhinweis
crontab
ohne Option löscht die alte schedule-Datei und wartet auf die Eingabe neuer Zeilen. Mit der Tastenkombination ctrl + d können Sie den Editiermodus verlassen.
Nur root
kann die -u user
Option verwenden, um die schedule-Datei eines anderen Benutzers zu bearbeiten.
Das obige Beispiel erlaubt root eine Aufgabe für user1 zu planen.
Anwendungen von crontab
¶
Die Anwendungen von crontab
sind vielfältig und beinhalten:
- Änderungen an den
crontab
Dateien werden sofort berücksichtigt; - Kein Neustart erforderlich.
Andererseits müssen folgende Punkte berücksichtigt werden:
- Das Programm muss autonom sein;
- Stellt Umleitungen bereit (stdin, stdout, stderr);
- Es ist nicht relevant, Befehle auszuführen, die Eingabe- und Ausgabeanfragen auf einem Terminal verwenden.
Anmerkung
Es ist wichtig zu verstehen, dass der Zweck von Scheduling darin besteht, die Aufgaben automatisch auszuführen, ohne dass ein externes Eingreifen erforderlich ist.
Die Datei crontab
¶
Die Datei crontab
ist nach folgenden Regeln strukturiert.
- Jede Zeile dieser Datei entspricht einem Schedule;
- Jede Zeile hat sechs Felder, 5 für die Zeit und 1 für die Aufgabe;
- Jedes Feld wird durch ein Leerzeichen oder einen Tabulatorzeichen getrennt;
- Jede Zeile endet mit einem Zeilenvorschub;
- Das Zeichen
#
am Anfang der Zeile kommentiert sie aus.
[root]# crontab –e
10 4 1 * * /root/scripts/backup.sh
1 2 3 4 5 6
Feld | Beschreibung | Details |
---|---|---|
1 | Minute(n) | Von 0 bis 59 |
2 | Stunde(n) | Von 0 bis 23 |
3 | Tag(e) des Monats | Von 1 bis 31 |
4 | Monat des Jahres | Von 1 bis 12 |
5 | Tag(e) der Woche | Von 0 bis 7 (0=7=Sonntag) |
6 | Die auszuführende Aufgabe | Befehl oder Skript |
Warnhinweis
Die auszuführenden Aufgaben müssen absolute Pfade verwenden und wenn möglich Umleitungen verwenden.
Um die Schreibweise für die Definition der Zeit zu vereinfachen, ist es ratsam, spezielle Symbole zu verwenden.
Wildcards | Beschreibung |
---|---|
* |
Alle möglichen Werte des Feldes |
- |
Zeigt einen Wertebereich an |
, |
Zeigt eine Werteliste an |
/ |
Definiert einen Schritt |
Beispiele:
Skript ausgeführt am 15. April um 10:25 Uhr:
25 10 15 04 * /root/scripts/script > /log/…
Starte jeden Tag um 11 Uhr und dann um 16 Uhr:
00 11,16 * * * /root/scripts/script > /log/…
Jeden Tag von 11:00 bis 16:00 Uhr:
00 11-16 * * * /root/scripts/script > /log/…
Alle 10 Minuten während der üblichen Geschäftszeiten:
*/10 8-17 * * 1-5 /root/scripts/script > /log/…
Für den Root-Benutzer hat crontab
auch einige spezielle Zeiteinstellungen:
@Option | Beschreibung |
---|---|
@reboot | Task beim Neustart des Systems ausführen |
@hourly | Task jede Stunde ausführen |
@daily | Der Task läuft täglich unmittelbar nach Mitternacht |
@weekly | Der Task läuft jeden Sonntag kurz nach Mitternacht |
@monthly | Task wird am ersten Tag des Monats direkt nach Mitternacht ausgeführt |
@annually | Der Task läuft am 1. Januar unmittelbar nach Mitternacht |
Ausführungsprozess des Tasks¶
Ein Benutzer, rockstar, möchte seine crontab
Datei bearbeiten:
-
crond
prüft, ob er dazu berechtigt ist (/etc/cron.allow
und/etc/cron.deny
). -
Falls er berechtigt ist, bearbeitet er seine
crontab
Datei (/var/spool/cron/rockstar
).Die schedule-Dateien werden jede Minute von
crond
gelesen. -
crond
führt die geplanten Aufgaben aus. -
Es aktualisiert systematisch eine Protokolldatei (
/var/log/cron
).