GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist Crontab und wie werden Aufgaben in Linux mit Crontab automatisiert?

Cron ist ein Dienstprogramm, das von Zeit zu Zeit Hintergrundprozesse oder Daemons verwaltet (z. B. jede Minute, jeden Tag, jede Woche oder jeden Monat). Cron funktioniert wie ein Zeitplaner, es kann beispielsweise Dateien aus dem Internet herunterladen oder E-Mails in regelmäßigen Abständen herunterladen, Sie können es auch für komplexere Aufgaben wie das Installieren von Updates verwenden. Cron wurde ursprünglich von Ken Thompson für UNIX entwickelt, aber jetzt können Sie es in allen UNIX-ähnlichen Systemen verwenden, sogar in Linux! UNIX hat ein anderes Dienstprogramm für die Aufgabenplanung namens „at“, aber cron ist viel besser. Es gibt zwei Möglichkeiten, Cron zu verwenden, die erste ist über die Cron-Verzeichnisse in /etc, wenn Sie ein Terminal öffnen und den folgenden Befehl eingeben:$ ls /etc/cron* Sie erhalten die folgende Ausgabe:

Jetzt können Sie die folgenden Verzeichnisse im Bild sehen:cron. täglich, cron. hourly, cron.monthly, cron.weekly und cron.yearly. Diese Verzeichnisse speichern die Skripte, die von cron ausgeführt werden müssen, entsprechend dem Namen jedes Verzeichnisses ist die Häufigkeit der Ausführung. Beispielsweise werden die in cron.hourly gespeicherten Skripte stündlich ausgeführt.

Jetzt werde ich ein einfaches Skript schreiben, um ein Backup eines Verzeichnisses zu erstellen, und ich werde es auf dem Cron ablegen. hourly-Verzeichnis, um das Skript stündlich auszuführen. Eine wichtige Sache, die Sie berücksichtigen müssen, ist die Bereitstellung der Ausführungsberechtigungen für das Skript, denn wenn Sie dies nicht tun, wird cron die Datei nicht ausführen.

Das Beispiel des Prozesses zum Hinzufügen eines Skripts zu Cron-Tasks unter Verwendung der globalen Cron-Verzeichnisse:

Ich habe ein Verzeichnis und möchte jede Stunde ein automatisches Backup erstellen:

​Ich schreibe ein Skript, um das Backup zu erstellen, ich habe Nano verwendet, aber Sie können Ihren bevorzugten Editor verwenden:

Ich teste das Skript:

Ich kopiere das Skript nach /etc/cron.hourly:

Ich gebe dem Skript die Ausführungsberechtigungen:

Alle Skripte müssen mit der Zeile #!/bin/sh beginnen, da sie die zu verwendende Shell angibt. Die Verwendung von cron über die Verzeichnisse /etc/cron.* ist nicht sehr nützlich, daher werde ich den zweiten Weg mit crontab erklären.

Wenn Sie sich an die Ausgabe erinnern, als ich den Inhalt von /etc/cron* aufgelistet habe, sehen Sie die folgende Datei:/etc/crontab

Sie können Aufgaben in der Datei crontab planen, aber zuerst müssen Sie Folgendes lernen:

Wenn Sie den Inhalt der crontab-Datei analysieren, können Sie 7 Felder in den Zeilen nach „# run-parts“ identifizieren, ich meine die folgenden (die erste Zeile nach „# run-parts“):

​Feld1 Feld2 ​Feld3 Feld4 Feld5 Feld6 Feld7
01 * * * * ​root ​Schön …

Die ersten fünf Felder geben Zeitwerte an, das sechste Feld gibt den Benutzer an und das siebte gibt den auszuführenden Befehl an, letzteres kann ein Skript oder ein Befehl sein (uname, ls, apt-get usw.). Es folgen die Zeitfelder:

​Minute Stunde Tag des Monats ​Monat ​Wochentag
01 * * * *

Der akzeptierte Wert für jedes Feld ist:

​Minute ​00 – 59
​Stunde ​00 – 23
​Tag des Monats ​1 – 31
​Monat ​1 – 12
​Wochentag ​1 – 7 (Montag:1, Sonntag:7)

Wenn der Wert eines dieser Felder „*“ ist, bedeutet dies alle möglichen Werte für das entsprechende Feld, zum Beispiel * * * * * root /root/script.shDiese Aufgabe wird jede Minute, alle Tage und von root ausgeführt alle Monate.

Crontab verwendet zu spezielle Zeichenfolgen, um Frequenzbereiche zu definieren:

@reboot ​Einmal nach dem Booten
​@jährlich ​Einmal im Jahr
​@jährlich ​Dasselbe wie @yearly
​@monatlich ​Einmal im Monat
​@weekly ​Einmal pro Woche
​@daily ​Täglich
​@Mitternacht ​Wie @daily
​@hourly Stündlich

Sie ändern einfach die Zeitfelder für eine der speziellen Zeichenfolgen und vervollständigen dann den Rest, z. B. @annually root dist-upgrade. Diese Aufgabe sollte jedes Jahr automatisch ausgeführt werden.

Jetzt können Sie Aufgaben zu crontab hinzufügen, Sie können auch ein .scripts-Verzeichnis in Ihrem /home erstellen und Ihre Skripte darin speichern, schließlich können Sie einen Eintrag für jedes Skript in der crontab-Datei hinzufügen.

Crontab kann eine Aufgabendatei für jeden Benutzer verwalten, Sie können mit dem folgenden Befehl testen, ob Ihr Benutzer Crontab-Aufgaben hat:

Sie können Aufgaben in einer Datei planen, erstellen Sie sie einfach:

Wenn Sie Ihre Crontab-Datei erstellt haben, müssen Sie sie in Cron laden, indem Sie den folgenden Befehl eingeben:

$ crontab your_crontab ​

Cron ist sehr leistungsfähig, denn nachdem Sie eine neue Crontab geladen haben, müssen Sie nichts tun, das ist alles, Cron lädt automatisch neue Aufgaben und Crontab-Dateien. Das Ergebnis meiner crontab ist ein Skript, das jede Minute eine Datei mit Datumsangaben erstellt:

Skript

Die generierte Datei Weitere Optionen für crontab sind die folgenden:

Cron ist der leistungsfähigste Aufgabenplaner, den ich kenne, und er ist hervorragend, weil er nicht nur für Linux, sondern für alle UNIX-ähnlichen Systeme geeignet ist. Wenn Sie einen Server verwalten, werden Sie Cron wahrscheinlich lieben, auch wenn Sie ein gewöhnlicher Benutzer sind, werden Sie Cron mögen, mit Cron können Sie alles planen. Wenn Sie mehr über Cron erfahren möchten, sollten Sie sich die Manpages ansehen:

$ man cron
$ man crontab 

Linux
  1. Planen von Aufgaben mit dem Linux-Cron-Befehl

  2. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  3. Was ist FirewallD und wie wird es unter Linux implementiert?

  4. Was ist NFS und wie wird es unter Linux installiert?

  5. Automatisieren Sie Systemaufgaben mit crontab auf CentOS 7

So verwalten Sie Cron-Jobs unter Linux einfach und sicher

Was ist Git und wie installiert man Git unter Linux?

So automatisieren Sie Aufgaben mit Cron-Jobs in Linux

Cron-Jobs und Crontab unter Linux erklärt

Crontab in Linux mit Beispielen verstehen

So planen Sie Jobs mit Cron in Linux