Lassen Sie uns Crontab, seine Befehle und verschiedene Vorgänge im Zusammenhang mit Crontab kennenlernen.

Wir werden lernen, wie man mit dem Dienstprogramm cron Aufgaben plant, und schließlich werden wir auch einige der Online-Tools besprechen, die uns bei der Formatierung und dem Testen der cron-Befehle helfen.

Herkunft

Crontab steht für“Cron-Tabelle“. Das Wort cron stammt von dem griechischen Wort Chronos , das Zeit bedeutet. Crontab ist ein System-Daemon-Prozess, der automatisch einige Aufgaben und Jobs zu einer bestimmten Zeit ausführt.

Anwendungsfälle

Crontab ist nützlich, um verschiedene Vorgänge auszuführen, wie z.B. automatische Backups, Rotation von Protokolldateien, Synchronisierung von Dateien zwischen entfernten Rechnern und Löschen von temporären Ordnern, usw. Crontab kann für jede Art von Arbeit verwendet werden, aber besonders nützlich wird es, wenn es um die Systemadministration geht.

Mit cron kann ein Administrator einen Job für eine bestimmte Uhrzeit und einen bestimmten Tag planen.

Sehen wir uns also an, wie wir dies einrichten können.

Crontab-Syntax

Um eine Liste von Befehlen auszuführen, liest das Dienstprogramm cron die Konfigurationsdateien. Um die Zeilen in den Crontab-Konfigurationstabellen zu interpretieren, folgt es einer Crontab-Syntax. Crontab hat sechs Felder, wobei die ersten fünf (1-5) Felder das Datum und die Uhrzeit der Ausführung festlegen. Das letzte Feld, d.h. das 6. Feld, könnte ein Benutzername und/oder eine auszuführende Aufgabe /Job/Befehl/Skript sein.

* * * * * USER_NAME COMMAND/SCRIPT-TO-EXECUTE

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_ ________ Wochentag (0 – 6) (0 ist Sonntag, oder Namen verwenden)
│ │ │ │ |____________ Monat (1 – 12),* bedeutet jeden Monat
│ │ |______________ Tag des Monats (1 – 31),* bedeutet jeden Tag
│ |________________ Stunde (0 – 23),* bedeutet jede Stunde
|___________________ Minute (0 – 59), * bedeutet jede Minute

Anmerkungen:

  • Ein Sternchen (*) wird verwendet, um alle möglichen Werte für ein Feld zu finden. Ein Sternchen im Feld Stunde bedeutet zum Beispiel jede Stunde oder ein Sternchen im Feld Monat bedeutet jeden Monat.
  • username ist optional (nur verfügbar, wenn es sich um die System-Crontab-Datei handelt)

Beispiele:

Lassen Sie uns die obige Syntax anhand einiger Beispiele verstehen

1. Planen Sie einen Cron, der täglich um 5 Uhr morgens ausgeführt wird

0 5 * * * /scripts/job.sh

2. Planen Sie einen Cron, der zweimal täglich um 6 Uhr morgens und 18 Uhr abends ausgeführt wird

0 6,18 * * * /scripts/job.sh

3. Einen Cron für die Ausführung zu jeder Minute einplanen

* * * * * /scripts/job.sh

4. Planen Sie einen Cron, der jeden Montag um 19 Uhr ausgeführt wird.

0 19 * * * mon /scripts/job.sh

5. Planen Sie einen Cron, der alle 15 Minuten ausgeführt wird.

*/10 * * * * /scripts/job.sh

6. Planen Sie einen Cron, der in ausgewählten Monaten ausgeführt wird

* * * feb,jun,oct * /script/job.sh

7. Führen Sie das Shell-Skript /home/script/backup.sh am 4. März um 7:25 Uhr aus

25 7 4 3 * /home/script/backup.sh

8. Planen Sie einen Cron, der alle 30 Sekunden ausgeführt wird

Da wir keine Kontrolle über die Sekunden in der Crontab haben, können wir dies mit dem folgenden zweistufigen Verfahren erreichen.

  • Lassen Sie uns zunächst eine Aufgabe planen, die jede Minute ausgeführt wird.
* * * * * /home/scripts/script.sh
  • Nun verwenden wir den Befehl sleep, um die Ausführung für 30 Sekunden zu unterbrechen.
* * * * * sleep 30; /home/scripts/script.sh

Die obige Aufgabe hält die Ausführung für 30 Sekunden an und setzt sie dann wieder fort.

Typ der Cron-Konfigurationsdateien

Es gibt zwei Arten von Cron-Konfigurationsdateien:

Das UNIX/Linux-System Crontab

Hierfür sind Root-Rechte erforderlich, da sie normalerweise für Systemdienste und kritische Aufträge verwendet wird. Das sechste Feld (in der obigen Syntaxbeschreibung) ist der Name eines Benutzers, unter dem der Befehl ausgeführt werden soll. Es gibt System Crontab die Möglichkeit, Befehle unter einem beliebigen Benutzer auszuführen.

Der Benutzer Crontab

Benutzer können mit dem Befehl crontab auch ihre eigenen Cron-Jobs installieren. Auch hier ist das sechste Feld (in der obigen Syntaxbeschreibung) der auszuführende Befehl, und alle Befehle werden als der Benutzer ausgeführt, der die crontab erstellt hat.

Jeder Benutzer kann seine eigene crontab-Datei haben. Obwohl sich diese Dateien in /var/spool/cron/crontabsbefinden, sind sie nicht dafür gedacht, direkt bearbeitet zu werden. Wir müssen den Befehl crontab verwenden, um unsere eigenen Cron-Jobs zu bearbeiten oder einzurichten.

Wie funktioniert das?

Der cron-Dienst (Daemon) läuft im Hintergrund und überprüft ständig (jede Minute) die Datei /etc/crontab und die Verzeichnisse /etc/cron.*/. Er überprüft auch das Verzeichnis /var/spool/cron/.

Befehle werden von cron ausgeführt, wenn die Felder Minute, Stunde und Monat mit der aktuellen Uhrzeit übereinstimmen und mindestens eines der beiden Tagesfelder (Tag des Monats oder Tag der Woche) mit dem aktuellen Tag übereinstimmt.

Grundlegende Befehle

Vorhandene Cron-Jobs auflisten

Mit dem folgenden Befehl können wir alle Cron-Jobs auflisten, ohne die Konfigurationsdatei crontab zu öffnen

crontab -l

Wenn kein Job vorhanden ist, wird die folgende Ausgabe angezeigt

[geekflare@localhost ~]# crontab -l
keine crontab für geekflare
[geekflare@localhost ~]#

Wenn der Benutzer bereits einige der Jobs hinzugefügt hat, wird die Ausgabe wie folgt aussehen.

[geekflare@localhost ~]# crontab -l
# Bearbeiten Sie diese Datei, um Aufgaben einzuführen, die von cron ausgeführt werden sollen.
#
# Jede Aufgabe, die ausgeführt werden soll, muss in einer einzigen Zeile definiert werden
# die mit verschiedenen Feldern angibt, wann die Aufgabe ausgeführt werden soll
# und welcher Befehl für die Aufgabe ausgeführt werden soll
#
# Um die Zeit zu definieren, können Sie konkrete Werte angeben für
# Minute (m), Stunde (h), Tag des Monats (dom), Monat (mon),
# und Wochentag (dow) angeben oder '*' in diesen Feldern verwenden (für 'any'). #
# Beachten Sie, dass die Aufgaben auf der Grundlage des Cron-Systems gestartet werden
# Daemon's Vorstellung von Zeit und Zeitzonen.
#
# Die Ausgabe der crontab-Jobs (einschließlich Fehler) wird per
# E-Mail an den Benutzer gesendet, dem die crontab-Datei gehört (sofern nicht umgeleitet).
#
sie können zum Beispiel ein Backup aller Ihrer Benutzerkonten # durchführen
# jede Woche um 5 Uhr morgens mit:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# Weitere Informationen finden Sie in den Handbuchseiten von crontab(5) und cron(8)
#
# m h dom mon dow Befehl
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[geekflare@localhost ~]#

Die Cron-Tabelle ist benutzerspezifisch, d.h. Sie müssen mit einem bestimmten Benutzer angemeldet sein, um die Liste der Cron-Tabellen zu sehen.

Cron für einen bestimmten Benutzer auflisten

Um geplante Aufträge eines anderen Benutzers aufzulisten, verwenden Sie die Optionen -u(Benutzer) und -l(Liste).

crontab -u anderer_Benutzername -l

Beispiel: crontab -u geekflare -l

Hinzufügen/Ändern von Crontab-Einträgen

Um den Crontab-Eintrag zu bearbeiten, können wir die Option -e wie unten gezeigt verwenden.

crontab -e

Der obige Befehl öffnet den vi-Editor, in dem Sie die Details des Jobs angeben und die Datei speichern. Sobald die Datei gespeichert ist, können Sie mit crontab -l überprüfen, ob cron konfiguriert ist oder nicht.

Hinzufügen/Ändern von Crontab-Einträgen für einen bestimmten Benutzer

Wir können die Crontab für einen anderen Benutzer mit dem folgenden Befehl bearbeiten

crontab -u anderer_Benutzername -e

Beispiel: crontab -u geekflare -e

Crontab Eintrag entfernen

Verwenden Sie den Parameter <strong>-r</strong> mit Crontab, um komplette geplante Aufträge ohne Bestätigung aus der Crontab zu entfernen

crontab -r

Wenn Sie vor dem Löschen von geplanten Aufträgen eine Bestätigung wünschen, verwenden Sie die Option <strong>-i</strong> mit -r, die den Benutzer vor dem Löschen der Crontab des Benutzers zur Bestätigung auffordert.

crontab -i -r
[geekflare@localhost ~]# crontab -i -r
crontab: geekflare's crontab wirklich löschen?

Crontab Sonderzeichenfolge

Neben der oben beschriebenen Syntax können wir auch acht spezielle Zeichenketten verwenden, die von Crontab bereitgestellt werden. Damit sparen wir nicht nur Zeit, sondern verbessern auch die Lesbarkeit.

Besondere ZeichenfolgeBeschreibung
@neustartEinmalig ausführen, nach dem Start.
@yearlyWird einmal pro Jahr ausgeführt, d.h. 0 0 1 1 *
@jährlichDasselbe wie @yearly
@monatlichWird einmal im Monat ausgeführt, d.h. 0 0 1 * *
@wöchentlichLäuft einmal pro Woche, d.h. 0 0 * * 0
@täglichLäuft einmal am Tag, d.h. 0 0 * * *
@MitternachtGleich wie @daily
@stündlichWird einmal pro Stunde ausgeführt, d.h. 0 * * * *

Beispiele für spezielle Crontab-Zeichenfolgen

1. Crontab zur Planung von Aufgaben auf jährlicher Basis

@jährlich /scripts/greeting.sh

Wir können die obige Datei ausführen, um einen Neujahrsgruß zu versenden. Sie wird in der ersten Minute eines jeden Jahres ausgeführt.

2. Crontab zur Planung von Aufgaben, die monatlich ausgeführt werden.

@monatlich /scripts/cleanup.sh

Wir können die obige Crontab ausführen, um einige Aufräumarbeiten am Anfang eines jeden Monats durchzuführen.

In ähnlicher Weise können wir andere spezielle Crontab-Zeichenketten für wöchentliche, tägliche und stündliche Aufgaben verwenden.

Cron-Verzeichnis

Der Systemadministrator kann einen systemweiten Cron-Zeitplan verwenden, der sich im vordefinierten Cron-Verzeichnis befindet, wie unten gezeigt

  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monatlich
  • /etc/cron.weekly

Crontab Beispiele in Echtzeit

Lassen Sie uns einige der Echtzeit-Beispiele besprechen, die ein Systemadministrator oder IT-Profis normalerweise verwenden.

Leere Dateien und Verzeichnisse löschen

45 0 * * * geekflare find /tmp -type f -empty -delete

Der obige Cron-Ausdruck findet die leeren Dateien und Verzeichnisse im Verzeichnis /tmp und löscht sie. Dieser Job wird täglich um 12.45 Uhr ausgeführt. Wir müssen den Benutzernamen angeben, der diesen Job ausführen soll. Im obigen Beispiel führt der Benutzer geekflare den Cron-Job aus.

Ausführen mehrerer Aufgaben mit einem einzigen Cron-Job

* * * * * /home/scripts/backup.sh; /home/scripts/scritp.sh

Mehrere Aufgaben/Jobs können mit einem Semikolon(;) getrennt und einem einzigen Cron-Ausdruck zugewiesen werden.

Cron-Formatierung & Test-Tools

Bisher haben wir die Befehle und die Syntax von crontab zur Planung einer Aufgabe besprochen. Aber was ist, wenn Sie kein Systemadministrator sind und Ihre Aufgabe nicht darin besteht, Cron regelmäßig einzurichten? Dann kann es sein, dass Sie sich die Syntax nicht merken können, und das eröffnet Raum für Fehler. Aber keine Sorge, wir haben eine Lösung für dieses Problem.

Es gibt mehrere Cron-Formatierungstools, die online verfügbar sind.

# 1. Cron Job Generator

Cron Job Generator ist eine sehr benutzerfreundliche GUI, in der Sie die Minute, die Tage und den Pfad des Skripts angeben können, um eine Crontab zu erstellen.

Nehmen wir ein Echtzeit-Beispiel, bei dem ich /home/processMonitor.sh alle 5 Minuten zwischen Montag und Freitag ausführen muss.

Ich habe also die folgende Cron-Syntax, die ich in meine Crontab einfügen kann, indem ich ausführe

crontab -e
0,5,10,15,20,25,30,35,40,45,50,55 * * * 1-5 /home/processMonitor.sh

# 2. Crontab Generator

Crontab Generator ist ein weiteres praktisches Tool zum Erstellen von Crontab. Mit diesem Tool können Sie auch angeben, ob Sie die Cron-Ausgabe in einer Datei speichern oder per E-Mail versenden möchten.

# 3. Crontab Guru

Crontab Guru ist ein einfacher Online-Editor für Cron-Zeitplanausdrücke. Darüber hinaus bietet er eine nützliche Funktion zur Überwachung Ihres Cronjobs. Alles, was wir tun müssen, ist, einen bereitgestellten Befehl zu kopieren und an das Ende der Crontab-Definition anzuhängen. Falls der Cronjob fehlschlägt oder gar nicht erst startet, erhalten Sie eine Warnmeldung per E-Mail.

Im folgenden Beispiel wird der Job um 04:05 Uhr ausgeführt, jeden Tag, jeden Monat und jede Woche.

Fazit

Ich hoffe, die obigen Ausführungen helfen Ihnen, Crontab und die Einrichtung von Cron-Jobs besser zu verstehen. Das Planen von Aufträgen über Cron ist eine der vielen Aufgaben eines Linux-Administrators.

More on Linux