Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter Linux und Vernetzung Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Invicti Web Application Security Scanner - die einzige Lösung, die eine automatische Überprüfung von Schwachstellen mit Proof-Based Scanning™ ermöglicht.

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 , was 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 Verwalter einen Job für eine bestimmte Uhrzeit und einen bestimmten Tag planen.

Sehen wir uns auch 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 BEFEHL/SKRIPT ZUM AUSFÜHREN

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_ ________ 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 dies wie folgt angezeigt.

[geekflare@localhost ~]# crontab -l
# Bearbeiten Sie diese Datei, um Aufgaben einzuführen, die von cron ausgeführt werden sollen.
#
# Jede auszuführende Aufgabe muss über eine einzelne 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 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 der Zeit- und Zeitzonenvorstellung des
# Daemons von cron gestartet werden.
#
# Die Ausgabe der crontab-Jobs (einschließlich Fehlern) wird per
# E-Mail an den Benutzer gesendet, dem die crontab-Datei gehört (es sei denn, sie wird umgeleitet).
#
# Sie können zum Beispiel jede Woche um 5 Uhr morgens ein Backup aller Ihrer Benutzerkonten
# erstellen mit:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# Weitere Informationen finden Sie in den Manual Pages von crontab(5) und cron(8)
#
# m h dom mon dow command
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 bei 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 Sie, 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: wirklich die crontab von geekflare 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
@neustartNach dem Start einmalig ausführen.
@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 das 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 einen 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 auch die folgende Cron-Syntax, die ich in mein 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 jeden Tag, jeden Monat und jede Woche um 04:05 Uhr ausgeführt.

# 4. CRON-Tester

MitCRON-Tester können wir die Cron-Zeit-/Datumsdefinitionen testen. Es kann vorkommen, dass wir die vorhandene Cron-Syntax zur Fehlersuche entschlüsseln müssen oder einfach nur einen Test durchführen möchten.

Hierfür können wir dieses Tool verwenden. Kopieren Sie einfach unseren Cron-Ausdruck und fügen Sie ihn in das Feld für die Cron-Definition ein. Wählen Sie dann die Anzahl der Wiederholungen aus und klicken Sie auf Testen Sie, um die verschiedenen Termine zu sehen, an denen der Ausdruck ausgeführt werden soll.

Prüfen wir einen unserer Cron-Ausdrücke 4 3 */2 * *, deralle zwei Tage um 03:04(AM) ausgeführt werden soll. Überprüfen wir ihn mit cron tester.

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. Wenn Sie daran interessiert sind, fortgeschrittene Fähigkeiten zu erlernen, sollten Sie sich diesen Kurs ansehen.

  • Chandan Kumar
    Autor
    Chandan Kumar ist der Gründer von Geekflare. Er hat Millionen von Menschen geholfen, sich im digitalen Bereich zu verbessern. Er hat eine Leidenschaft für Technologie und ist auf einer Mission, die Welt zu erforschen und das Wachstum von Fachleuten und Unternehmen zu steigern.
Dank an unsere Sponsoren
Weitere gute Lektüre zu Linux
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti nutzt das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu überprüfen und innerhalb weniger Stunden verwertbare Ergebnisse zu erzielen.
    Versuchen Sie Invicti
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder