Crontab unter Linux: BEISPIELE zur Jobplanung

โšก Intelligente Zusammenfassung

Crontab in Linux plant die automatische Ausfรผhrung von Befehlen zu festgelegten Zeiten, Daten oder Intervallen mithilfe des Cron-Daemons und ermรถglicht Administratoren so die Automatisierung von Backups, Protokollbereinigung, Benachrichtigungen und routinemรครŸigen Systemwartungen ohne manuelles Eingreifen.

  • โฐ Cron-Daemon: Der Cron-Hintergrundprozess liest Crontab-Dateien und fรผhrt jeden geplanten Job genau zur von Ihnen festgelegten Minute aus.
  • ๐Ÿ—‚๏ธ Crontab-Format: Dem auszufรผhrenden Befehl gehen fรผnf Zeitfelder voraus โ€“ Minute, Stunde, Tag des Monats, Monat und Wochentag.
  • โœ๏ธ Redaktionsjobs: Verwenden Sie crontab -e, um Jobs hinzuzufรผgen oder zu รคndern, crontab -l, um sie aufzulisten, und crontab -r, um sie zu entfernen.
  • ๐Ÿ” Spezielle Saiten: Abkรผrzungen wie @reboot, @daily, @weekly und @hourly ersetzen die fรผnf Zeitfelder fรผr gรคngige Zeitplรคne.
  • ๐Ÿ“… Beispiele aus der Praxis: Vorgefertigte Eintrรคge decken alle fรผnf Minuten, bestimmte Wochentage, monatliche Lรคufe und Startaufgaben ab.
  • ๐Ÿค– KI-Unterstรผtzung: KI-Assistenten und GitHub Copilot kรถnnen Cron-Ausdrรผcke in Sekundenschnelle generieren und erklรคren.

Crontab in der Linux-Jobplanung mit Beispielen

Crontab, kurz fรผr Cron-Tabelle, ist die Konfigurationsdatei und die Befehlszeile, die den Cronjob steuert. Linux Jobplanung. In den folgenden Abschnitten werden das Crontab-Format, die Befehle zum Hinzufรผgen, Auflisten und Entfernen von Jobs, die speziellen @-Zeichenketten sowie sofort einsatzbereite Planungsbeispiele erlรคutert.

Was ist Crontab?

Cron ist nach dem griechischen Wort โ€žChronosโ€œ benannt, was Zeit bedeutet. Es handelt sich um einen Systemprozess (einen Daemon), der Aufgaben automatisch nach einem festgelegten Zeitplan ausfรผhrt. Cron ist eine Reihe von Befehlen, die zum Ausfรผhren regelmรครŸig geplanter Aufgaben verwendet werden. Crontab steht fรผr โ€žCron-Tabelleโ€œ und ermรถglicht die Verwendung des Cron-Job-Schedulers zur Ausfรผhrung dieser Aufgaben.

Crontab ist auch der Name des Programms, mit dem dieser Zeitplan bearbeitet werden kann. Es wird durch eine Crontab-Datei gesteuert โ€“ eine Konfigurationsdatei, die die Shell-Befehle auflistet, die regelmรครŸig nach dem angegebenen Zeitplan ausgefรผhrt werden sollen.

Warum Cron-Jobs verwenden?

Hier sind die wichtigsten Grรผnde fรผr die Verwendung von Cronjobs unter Linux:

  • Erstellt planmรครŸige Backups von Protokolldateien oder Datenbanken.
  • Alte Protokolldateien werden automatisch gelรถscht.
  • Archives und purges Datenbanktabellen.
  • Versendet Benachrichtigungs-E-Mails wie Newsletter oder Erinnerungen an das Ablaufdatum von Passwรถrtern.
  • Fรผhrt regelmรครŸige Bereinigungen des Datenzwischenspeichers durch.
  • Automatisiert wiederkehrende Unix- und Linux-Aufgaben.
  • Automatisiert die routinemรครŸige Systemwartung.

Wie verwende ich Cron unter Linux?

Das Linux-Systempaket enthรคlt einen praktischen Aufgabenplaner namens crontab. Crontab ist beliebt, weil sich Aufgaben so planen lassen, dass sie als Root-Benutzer ausgefรผhrt werden, was automatisierte Systemรคnderungen vereinfacht. Man รคndert die Aufgabe einfach einmal und wartet dann, bis sie planmรครŸig erneut ausgefรผhrt wird.

Linux Crontab-Format

Ein Linux-Crontab-Eintrag besteht aus sechs Feldern. Die ersten fรผnf Felder definieren Datum und Uhrzeit der Ausfรผhrung, das sechste Feld enthรคlt den auszufรผhrenden Befehl.

Crontab-Syntax:

[Minute] [hour] 
[Day_of_the_Month] 
[Month_of_the_Year] 
[Day_of_the_Week] 
[command]

Das untenstehende Diagramm ordnet jedem Sternchen in einem Crontab-Eintrag das Feld zu, das es steuert, von der Minute bis zum Wochentag, gefolgt vom auszufรผhrenden Befehl.

Diagramm des Linux-Crontab-Formats mit den fรผnf Zeitfeldern und dem Befehl

Die fรผnf Zeitfelder akzeptieren folgende Werte: Minute (0โ€“59), Stunde (0โ€“23), Tag des Monats (1โ€“31), Monat (1โ€“12 oder Jan.โ€“Dez.) und Wochentag (0โ€“7, wobei 0 und 7 beide Sonntag bedeuten). Jedes Feld wird mit folgenden Sonderzeichen gesteuert:

  • Sternchen (*): Entspricht jedem mรถglichen Wert fรผr dieses Feld.
  • Definiere einen Bereich: Verwenden Sie einen Bindestrich, um einen Bereich anzugeben, z. B. 1-10, 30-40, Jan-Mรคr oder Mo-Mi.
  • Definieren Sie mehrere Bereiche: Verwenden Sie Kommas, um Bereiche zu kombinieren, z. B. Apr-Jun,Okt-Dez.

So fรผgen Sie Crontab hinzu/รคndern es

Benutzer kรถnnen ihre eigenen Crontab-Jobs mit dem folgenden Crontab-Befehl bearbeiten. Die Option -u bezieht sich auf die Crontab eines bestimmten Benutzers; geben Sie daher den Benutzernamen wie in den spรคteren Beispielen gezeigt an:

$ crontab -u -e 

Der obige Befehl รถffnet die persรถnliche Crontab-Konfiguration fรผr Ihr System, die Sie in Ihrem Standard-Texteditor bearbeiten kรถnnen.

Ein Neustart von cron ist nicht erforderlich; Ihre ร„nderungen werden automatisch รผbernommen. Ihre aktuellen Jobs kรถnnen Sie mit folgendem Befehl anzeigen:

$ crontab -l

Um Ihre Crontab-Aufgaben zu entfernen, verwenden Sie folgenden Befehl:

$ crontab -r

Um einen Job in der Crontab hinzuzufรผgen oder zu aktualisieren, verwenden Sie den folgenden Befehl:

crontab -e

Um die Crontab eines anderen Benutzers zu bearbeiten, geben Sie den Benutzer mit der Option -u an:

crontab -u username -e

So listen Sie Crontab auf

So zeigen Sie die Crontab-Eintrรคge des aktuellen Benutzers an:

crontab -l

So zeigen Sie die Crontab-Eintrรคge eines bestimmten Benutzers an:

crontab -u username -l

Wichtige Crontab-Beispiele

Hier sind einige wichtige, sofort einsatzbereite Beispiele fรผr Crontab-Zeitplรคne:

Beschreibung Befehl
Fรผhrt die verschiedenen geplanten Aufgaben aus. Der unten stehende Befehl wird tรคglich um 7:00 Uhr und 17:00 Uhr ausgefรผhrt.
0 7,17 * * * /scripts/script.sh
Fรผhrt alle 5 Minuten einen Cronjob aus.
*/5* * * * *  /scripts/script.sh
Fรผhrt die Aufgabe jedes Mal aus Monday um 5 Uhr morgens. Das ist hilfreich fรผr wรถchentliche Aufgaben wie die Systembereinigung.
0 5 * * mon  /scripts/script.sh
Fรผhrt Ihr Skript in einem 3-Minuten-Intervall aus.
*/3 * * * * /scripts/monitor.sh
Plant einen Cronjob, der in bestimmten Monaten ausgefรผhrt wird โ€“ hier im Februar, Juni und September.
* * * feb,jun,sep *  /script/script.sh
Wird an ausgewรคhlten Tagen ausgefรผhrt. Dieses Beispiel wird jeden Tag ausgefรผhrt. Monday und Mittwoch um 5 Uhr.
0 17 * * mon,wed  /script/script.sh
Ermรถglicht es Cron, am ersten Samstag jedes Monats ausgefรผhrt zu werden.
0 2 * * sat  [ $(date +%d) -le 06 ] && /script/script.sh
Fรผhrt ein Skript in einem 6-Stunden-Intervall aus, das wie folgt konfiguriert ist.
0 */6 * * * /scripts/script.sh
Plant eine Aufgabe, die zweimal ausgefรผhrt werden soll am Monday und Dienstag. Verwenden Sie dazu die folgenden Einstellungen.
0 4,17 * * mon,tue /scripts/script.sh
Plant einen Cronjob, der alle 15 Sekunden ausgefรผhrt wird.
* * * * * /scripts/script.sh
* * * * *  sleep 15; /scripts/script.sh
Plant Aufgaben jรคhrlich. @yearly entspricht etwa โ€ž0 0 1 1 *โ€œ. Die Aufgabe wird einmal jรคhrlich am 1. Januar um Mitternacht ausgefรผhrt โ€“ praktisch fรผr NeujahrsgrรผรŸe.
@yearly /scripts/script.sh 
Fรผhrt Aufgaben monatlich aus. @monthly entspricht etwa โ€ž0 0 1 * *โ€œ. Die Aufgabe wird jeweils am ersten Tag des Monats um Mitternacht ausgefรผhrt.
@monthly /scripts/script.sh
Fรผhrt mehrere Aufgaben mit einem einzigen Cron-Eintrag aus.
* * * * * /scripts/script.sh; /scripts/scrit2.sh
Plant Aufgaben wรถchentlich. @weekly entspricht in etwa โ€ž0 0 * * 0โ€œ. Es fรผhrt wรถchentliche Aufgaben wie die Systembereinigung jeden Sonntag um Mitternacht aus.
@weekly /bin/script.sh
Plant Aufgaben tรคglich. @daily entspricht etwa โ€ž0 0 * * *โ€œ. Die Aufgabe wird einmal tรคglich um Mitternacht ausgefรผhrt.
@daily /scripts/script.sh
Fรผhrt Aufgaben stรผndlich aus. @hourly entspricht in etwa โ€ž0 * * * *โ€œ. Die Aufgabe wird zu Beginn jeder Stunde ausgefรผhrt.
@hourly /scripts/script.sh
Fรผhrt Aufgaben beim Systemneustart aus. @reboot ist nรผtzlich fรผr Aufgaben, die das System beim Start ausfรผhren soll, sodass Hintergrundprozesse automatisch gestartet werden.
@reboot /scripts/script.sh

Hรคufig gestellte Fragen

Benutzer-Crontabs werden in /var/spool/cron/ (oder /var/spool/cron/crontabs/ unter Debian und ) gespeichert. UbuntuDer systemweite Zeitplan befindet sich in /etc/crontab und im Verzeichnis /etc/cron.d. Benutzer-Crontabs sollten immer mit crontab -e bearbeitet werden, anstatt die Dateien direkt zu รถffnen.

Cron fรผhrt Jobs nur zum exakt geplanten Zeitpunkt aus und รผberspringt sie, wenn der Rechner ausgeschaltet ist. Anacron tracks speichert verpasste Auftrรคge und fรผhrt sie aus, sobald das System wieder eingeschaltet ist. Daher eignet es sich fรผr Laptops und Desktop-PCs, die nicht stรคndig laufen.

Cron benรถtigt eine minimale Umgebung, daher ist ein unvollstรคndiger Pfad (PATH) die hรคufigste Ursache. Verwenden Sie absolute Pfade fรผr Befehle und Skripte, stellen Sie sicher, dass das Skript ausfรผhrbar ist, und leiten Sie die Ausgabe in eine Protokolldatei um, um Fehler zur Fehlerbehebung zu erfassen.

Fรผgen Sie >> /Pfad/zur/Protokolldatei 2>&1 an den Befehl an, um Standardausgabe und Fehler in einer Datei zu erfassen. Alternativ kรถnnen Sie die Variable MAILTO am Anfang der Crontab-Datei setzen, sodass Cron die Ausgabe jedes Jobs an diese Adresse sendet.

Die Dateien `/etc/cron.allow` und `/etc/cron.deny` regeln den Zugriff. Existiert die Datei `cron.allow`, dรผrfen nur die darin aufgefรผhrten Benutzer die Crontab verwenden. Existiert hingegen nur die Datei `cron.deny`, dรผrfen alle Benutzer auรŸer den aufgefรผhrten Cron-Benutzern Cronjobs planen.

Ein mit `crontab -e` erstellter Benutzer-Crontab enthรคlt fรผnf Zeitfelder, gefolgt vom Befehl. Die Systemdatei `/etc/crontab` fรผgt ein Feld hinzu, das den Benutzer angibt, der den Job ausfรผhrt, und die Reihenfolge Minute, Stunde, Tag, Monat, Wochentag, Benutzername und Befehl enthรคlt.

Ja. Tools fรผr maschinelles Lernen kรถnnen normale Laufzeiten und Abschlusszeiten von Jobs ermitteln und Anomalien wie zu lange Laufzeiten, unbemerkte Fehler oder verspรคtete Ausfรผhrungen erkennen. Die KI-Protokollanalyse gruppiert zudem zusammengehรถrige Fehler, um die Ursachenforschung zu beschleunigen.

Ja. GitHub-Copilot Sie kรถnnen Cron-Ausdrรผcke aus einem Kommentar in einfacher Sprache generieren, die Funktion eines Zeitplans wie */5 * * * * erklรคren und das Shell-Skript entwerfen, das ein Job ausfรผhrt. Testen Sie den Ausdruck immer, bevor Sie ihn zu einer produktiven Crontab hinzufรผgen.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: