Crontab in Linux – mit Echtzeitbeispielen und Tools

Lassen Sie uns Crontab, seine Befehle und verschiedene mit Crontab verbundene Operationen untersuchen.

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

Inhaltsverzeichnis

Herkunft

Crontab steht für „Cron-Tabelle“. Das Wort Cron stammt vom griechischen Wort Chronos, was Zeit bedeutet. Crontab ist ein System-Daemon-Prozess, der automatisch einige Aufgaben und Jobs zur geplanten Zeit ausführt.

Anwendungsfälle

Crontab ist nützlich, um verschiedene Vorgänge auszuführen, wie z. B. die Handhabung automatisierter Backups, das Rotieren von Protokolldateien, das Synchronisieren von Dateien zwischen Remote-Computern und das Löschen temporärer Ordner usw. Crontab kann für jede Art von Arbeit verwendet werden, aber es wird besonders nützlich, wenn wir damit beginnen Systemadministration Art der Arbeit.

Mit Cron kann ein Administrator einen Job so planen, dass er zu einer bestimmten Uhrzeit und an einem bestimmten Tag ausgeführt wird.

Mal sehen, wie wir das einrichten können.

Crontab-Syntax

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

* * * * * BENUTZERNAME BEFEHL/SCRIPT-ZUM-AUSFÜHREN

│ │ │ │ │
│ │ │ │ │
│ │ │ │ |_________ Wochentag (0 – 6) (0 ist Sonntag, oder verwenden Sie Namen)
│ │ │ |____________ Monat (1 – 12),* bedeutet jeden Monat
│ │ |______________ Tag des Monats (1 – 31),* bedeutet jeden Tag
│ |________________ Stunde (0 – 23),* bedeutet stündlich
|_____ Minute (0 – 59), * bedeutet jede Minute

Anmerkungen:

  • Sternchen
  • wird verwendet, um alle möglichen Werte für ein Feld abzugleichen. Ein im Stundenfeld verwendetes Sternchen würde beispielsweise jeder Stunde entsprechen, oder ein Sternchen im Monatsfeld würde jedem Monat entsprechen.

Benutzername ist optional (nur verfügbar, wenn es sich um die Crontab-Datei des Systems handelt)

Beispiele:

Lassen Sie uns die obige Syntax anhand einiger Beispiele verstehen

0 5 * * * /scripts/job.sh

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

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

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

* * * * * /scripts/job.sh

3. Planen Sie einen Cron, der jede Minute ausgeführt wird

0 19 * * mon /scripts/job.sh

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

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

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

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

6. Planen Sie einen Cron zur Ausführung in ausgewählten Monaten

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

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

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

  • Da wir im Crontab keine Kontrolle über die Sekunden haben, können wir dies durch den folgenden zweistufigen Prozess erreichen.
* * * * * /home/scripts/script.sh
  • Lassen Sie uns zunächst eine Aufgabe planen, die jede Minute ausgeführt wird.
* * * * * sleep 30; /home/scripts/script.sh

Lassen Sie uns nun den Befehl sleep verwenden, um die Ausführung für 30 Sekunden anzuhalten.

  Die 6 besten Fotoverwaltungstools für Linux

Die obige Aufgabe stoppt die Ausführung für 30 Sekunden und wird dann wieder fortgesetzt.

Typ der Cron-Konfigurationsdateien

Es gibt zwei Arten von Cron-Konfigurationsdateien:

Das UNIX/Linux-System Crontab

Dies erfordert Root-Rechte, da es normalerweise für Systemdienste und kritische Jobs verwendet wird. Das sechste Feld (in der obigen Syntaxbeschreibung) ist der Name eines Benutzers, unter dem der Befehl ausgeführt werden soll. Es gibt dem System crontab die Möglichkeit, Befehle als jeder Benutzer auszuführen.

Die Benutzer-Crontab

Ein Benutzer kann auch seine eigenen Cron-Jobs mit dem Befehl crontab 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, und obwohl es sich um Dateien in /var/spool/cron/crontabs handelt, sind sie nicht dazu bestimmt, direkt bearbeitet zu werden. Wir müssen den crontab-Befehl zum Bearbeiten oder Einrichten unserer eigenen Cron-Jobs verwenden.

Wie funktioniert es? Der Cron-Dienst (Daemon) läuft im Hintergrund und überprüft ständig (jede Minute) die Datei /etc/crontab und die Verzeichnisse /etc/cron.*/. Es überprüft auch das Verzeichnis /var/spool/cron/. Befehle werden ausgeführt von Cron

wenn die Minuten-, Stunden- und Monatsfelder mit der aktuellen Uhrzeit übereinstimmen und mindestens eines der Zwei-Tages-Felder (Monatstag oder Wochentag) mit dem aktuellen Tag übereinstimmt.

Grundlegende Befehle

Vorhandene Cron-Jobs auflisten

crontab -l

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

[[email protected] ~]# crontab -l
no crontab for wdzwdz
[[email protected] ~]#

Wenn kein Job vorhanden ist, wird die Ausgabe als zurückgegeben

[[email protected] ~]# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 */1 * * * /home/account/scripts/updateAccountStatuses.sh
0 */1 * * * /home/account/scripts/reActivateAccountStatus.sh
[[email protected] ~]#

Wenn der Benutzer bereits einige Jobs hinzugefügt hat, wird dies wie folgt angezeigt.

  So hören Sie YouTube Music unter Linux mit Ytmdesktop

Die Cron-Tabelle ist benutzerspezifisch, was bedeutet, dass Sie mit einem bestimmten Benutzer angemeldet sein müssen, um die Cron-Tabellenliste anzuzeigen.

Cron für bestimmten Benutzer auflisten

Um geplante Jobs eines anderen Benutzers aufzulisten, verwenden Sie die Option als -u (Benutzer) und -l (Liste).

crontab -u anderer_benutzername -l

Beispiel: crontab -u wdzwdz -l

Crontab-Einträge hinzufügen/ändern

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

crontab -e

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

Crontab-Einträge für bestimmte Benutzer hinzufügen/ändern

crontab -u another_username -e

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

Beispiel: crontab -u wdzwdz -e

Crontab-Eintrag entfernen

Verwenden Sie den Parameter -r mit Crontab, um vollständige geplante Jobs ohne Bestätigung von Crontab zu entfernen

crontab-r

crontab -i -r
[[email protected] ~]# crontab -i -r
crontab: really delete wdzwdz's crontab?

Wenn Sie vor dem Löschen geplanter Jobs eine Bestätigung wünschen, verwenden Sie die Option -i mit -r, die den Benutzer zur Bestätigung auffordert, bevor die Crontab des Benutzers gelöscht wird.

Crontab-Spezialstring

Abgesehen von der oben besprochenen Syntax können wir auch acht spezielle Zeichenfolgen verwenden, die von Crontab bereitgestellt werden. Das spart nicht nur Zeit, sondern verbessert auch die Lesbarkeit.
Spezielle Zeichenfolge
Beschreibung
@reboot
Einmal ausführen, nach dem Start.
@jährlich
Einmal im Jahr ausführen, dh 0 0 1 1 *
@jährlich
Dasselbe wie @yearly
@monatlich
Einmal im Monat ausführen, dh 0 0 1 * *
@wöchentlich
Einmal pro Woche ausführen, dh 0 0 * * 0
@Täglich
Einmal täglich ausführen, dh 0 0 * * *
@Mitternacht
Dasselbe wie @daily
@stündlich

Einmal pro Stunde ausführen, dh 0 * * * *

Crontab-Beispiele für spezielle Zeichenfolgen

1. Crontab, um Aufgaben jährlich zu planen

@yearly /scripts/greeting.sh

Wir können oben einen ausführen, um einen Neujahrsgruß zu senden. Er wird in der ersten Minute jedes Jahres ausgeführt.

2. Crontab, um monatlich auszuführende Aufgaben zu planen.

@monatlich /scripts/cleanup.sh

Wir können das obige ausführen, um zu Beginn jedes Monats einige Aufräumarbeiten durchzuführen.

Ebenso können wir andere spezielle Crontab-Strings für wöchentliche, tägliche und stündliche Zwecke verwenden.

Cron-Verzeichnis

  • Der Systemadministrator kann einen systemweiten Cron-Zeitplan verwenden, der sich wie unten gezeigt im vordefinierten Cron-Verzeichnis befindet
  • /etc/cron.d
  • /etc/cron.daily
  • /etc/cron.stündlich
  • /etc/cron.monatlich

/etc/cron.weekly

Crontab-Echtzeitbeispiele

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

Leere Dateien und Verzeichnisse löschen

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

Der obige Cron-Ausdruck findet die leeren Dateien und das Verzeichnis aus dem /tmp-Verzeichnis und löscht sie. Dieser Job wird täglich um 00:45 Uhr ausgeführt. Wir müssen den Benutzernamen angeben, um diesen Job auszuführen. Im obigen Beispiel führt der wdzwdz-Benutzer eine Cron-Job-Operation aus.

Führen Sie mehrere Aufgaben mit einem einzigen Cron aus

* * * * * /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-Formatierungs- und Testwerkzeuge

  Die 9 besten Linux-Heimserver-Apps, die jeder installieren sollte

Bisher haben wir Befehle und Syntax von crontab zum Planen einer Aufgabe besprochen. Aber was ist, wenn Sie kein Systemadministrator sind und Ihre Aufgabe nicht darin besteht, Cron regelmäßig einzurichten, ist es möglicherweise nicht möglich, sich an die Syntax zu erinnern, und dies eröffnet Raum für Fehler. Keine Sorge, wir haben eine Lösung für dieses Problem.

Es sind mehrere Cron-Formatierungstools online verfügbar.

# 1. Cron-Job-Generator Cron-Job-Generator

ist eine sehr benutzerfreundliche GUI, in der Sie die Minute, die Tage und den Pfad des Skripts zum Generieren von crontab angeben können.

Nehmen wir ein Echtzeitbeispiel, bei dem ich /home/processMonitor.sh von Montag bis Freitag alle 5 Minuten ausführen muss.

Also habe ich die folgende Cron-Syntax erhalten, die ich durch Ausführen in meine Crontab einfügen kann
crontab – z

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

# 2. Easycron Easycron

ist ein nützlicher webbasierter Cron-Job-Scheduler. Wir können einen Cron-Job erstellen, indem wir eine aufzurufende URL angeben, wir können die Zeit festlegen, zu der er ausgeführt werden soll. Wir können auch einen Cron-Ausdruck angeben oder manuell aus einem beschreibenden Formular hinzufügen. Wichtig ist, dass wir optional die grundlegende HTTP-Authentifizierung für eine kleine Sicherheitsebene verwenden können.

Darüber hinaus kann Easycron auch für andere Zwecke verwendet werden, z. B. für Standard-Cron-Ausdrücke, Cron-Job-Ausführungsprotokolle, E-Mail-Benachrichtigungen, separate Fehlerprotokolle usw.

# 3. Crontab-Generator Crontab-Generator

ist ein weiteres praktisches Tool zum Generieren von Crontab und mit diesem Tool können Sie auch hinzufügen, ob Sie die Cron-Ausgabe in der Datei speichern oder per E-Mail senden möchten.

# 4. Crontab-Guru Crontab-Guru

ist ein einfacher Online-Editor für Cron-Zeitpläne. Darüber hinaus bietet es ein nützliches Mittel zur Überwachung Ihres Cronjobs. Alles, was wir tun müssen, ist, einen bereitgestellten Befehl zu kopieren und am Ende der crontab-Definition anzuhängen. Falls der Cron-Job fehlschlägt oder gar nicht startet, erhalten Sie eine Warn-E-Mail.

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

# 5. CRON-Tester CRON-Tester

ermöglicht es uns, die Cron-Zeit/Datum-Definitionen zu testen. Es kann vorkommen, dass wir die vorhandene Cron-Syntax zur Fehlerbehebung entschlüsseln müssen oder einfach nur einen Test durchführen möchten.

Dazu können wir dieses Tool verwenden. Alles, was wir tun müssen, ist unseren Cron-Ausdruck zu kopieren und in das Cron-Definitionsfeld einzufügen, dann die Anzahl der Iterationen auszuwählen und auf Test zu klicken, um die verschiedenen Daten anzuzeigen, an denen er ausgeführt wird.

Sehen wir uns einen unserer Cron-Ausdrücke 4 3 */2 * * an, der alle zwei Tage um 03:04 Uhr ausgeführt werden sollte. Lassen Sie uns dies mit dem Cron-Tester überprüfen.

Fazit Ich hoffe, das Obige hilft Ihnen, Crontab besser zu verstehen und Cron-Jobs einzurichten. Das Planen von Jobs über Cron ist eine der vielen Aufgaben, die von Linux Admin ausgeführt werden. Wenn Sie daran interessiert sind, die fortgeschrittenen Fähigkeiten zu erlernen, dann schauen Sie sich dies anKurs

.