Zum Inhalt

Task-Verwaltung

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, ...).

Cron tree

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
OptionBeschreibung
-eBearbeitet die schedule-Datei mit vi
-lZeigt den Inhalt der schedule-Datei an
-uName des Benutzers, dessen schedule-Datei manipuliert werden soll
-rSchedule-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
FeldBeschreibungDetails
1Minute(n)Von 0 bis 59
2Stunde(n)Von 0 bis 23
3Tag(e) des MonatsVon 1 bis 31
4Monat des JahresVon 1 bis 12
5Tag(e) der WocheVon 0 bis 7 (0=7=Sonntag)
6Die auszuführende AufgabeBefehl 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.

WildcardsBeschreibung
*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:

@OptionBeschreibung
@rebootTask beim Neustart des Systems ausführen
@hourlyTask jede Stunde ausführen
@dailyDer Task läuft täglich unmittelbar nach Mitternacht
@weeklyDer Task läuft jeden Sonntag kurz nach Mitternacht
@monthlyTask wird am ersten Tag des Monats direkt nach Mitternacht ausgeführt
@annuallyDer Task läuft am 1. Januar unmittelbar nach Mitternacht

Ausführungsprozess des Tasks

Ein Benutzer, rockstar, möchte seine crontab Datei bearbeiten:

  1. crond prüft, ob er dazu berechtigt ist (/etc/cron.allow und /etc/cron.deny).

  2. Falls er berechtigt ist, bearbeitet er seine crontab Datei (/var/spool/cron/rockstar).

    Die schedule-Dateien werden jede Minute von crond gelesen.

  3. crond führt die geplanten Aufgaben aus.

  4. Es aktualisiert systematisch eine Protokolldatei (/var/log/cron).