So planen Sie Aufgaben in Linux mit Cron und Crontab

So planen Sie Aufgaben in Linux mit Cron und Crontab

Wusstest du das Klingenläufer steht 2019? Das ist jetzt in drei Jahren! Ganz zu schweigen von Zurück in die Zukunft 2 , wo sie eine Zeitreise ins Jahr 2015 machen. Aber wir haben keine fliegenden Autos und es gibt keine Replikanten unter uns (soweit ich weiß).





Es ist leicht, von der aktuellen Technologie enttäuscht zu sein, wenn wir sie mit fiktiven Darstellungen der Zukunft vergleichen. Dennoch können unsere Telefone, Computer und sogar Häuser heutzutage erstaunliche Dinge tun. Die Fähigkeit, Aufgaben zu automatisieren, ist eine davon.





Jeder Linux-Benutzer kann von der Planung von Aufgaben profitieren, unabhängig davon, ob sie systembezogen sind (wie das Bereinigen alter Protokolle und Pakete aktualisieren ) oder dem Benutzer dienen (E-Mails abrufen, Podcasts herunterladen...). Windows-Benutzer haben den Taskplaner seit Windows 95. Das Dienstprogramm, das die gleiche Aufgabe unter Linux ausführt, heißt cron, und hier erklären wir, wie es verwendet wird.





Dateien zwischen Mac und Windows 10 teilen

Was ist Cron?

Cron ist ein Systemdienst, der im Hintergrund läuft, nach geplanten Aufgaben sucht und diese ausführt, wenn er welche findet. Die Aufgaben - auch 'Cronjobs' genannt - sind in speziellen Konfigurationsdateien (crontabs) definiert, die cron jede Minute scannt. Mehrere Versionen von cron sind auf verschiedenen Linux-Distributionen zu finden. Zum Beispiel heißt Fedoras Gabel von Cron Kumpel , und es gibt auch fcron , bcron , und dcron . Einige haben zusätzliche Funktionen, während andere mehr auf Sicherheit ausgerichtet sind, aber alle basieren auf derselben Idee.

Dieses Handbuch wurde für vixie-cron geschrieben, die am weitesten verbreitete Version von cron und diejenige, die Sie auf Ubuntu und seinen Derivaten finden. Obwohl die meisten Anweisungen auch für andere Cron-Implementierungen gelten, kann es geringfügige Unterschiede geben. Überprüfen Sie daher deren Handbücher, wenn Sie sich für einen Wechsel entscheiden.



Was ist ein Crontab?

Wenn es Ihnen ernst ist, Ihre Zeit zu verwalten, haben Sie wahrscheinlich eine Art Kalender – eine App oder zumindest ein Blatt Papier. Crontab ist dem Kalender Ihres Computers sehr ähnlich. Es enthält die Informationen über geplante Aufgaben und teilt Cron mit, welche Befehle zu welcher Zeit ausgeführt werden sollen.

Tatsächlich befinden sich mehrere crontabs auf Ihrem System. Jeder Benutzer hat seine eigene crontab, auch root (der Administrator). Benutzer-Crontabs werden gespeichert in





/var/spool/cron/crontabs/

. Die

crontab -l

Befehl listet die crontab-Datei für den aktuellen Benutzer auf. Sie können die Root-Crontab überprüfen mit





sudo crontab -l

.

Zusätzlich gibt es die System-crontab-Datei

/etc/crontab

die für systemweite Aufgaben verwendet wird. Normalerweise haben sie die Form von ausführbaren, root-eigenen Skripten, die in

/etc/cron.hourly/

,

/etc/cron.daily/

,

/etc/cron.weekly/

, und

/etc/cron.monthly/

Ordner und bei einigen Distributionen die

/etc/cron.d/

Ordner ebenfalls. Im Allgemeinen sollten Sie sich mit diesen Aufgaben nicht befassen, da die meisten von ihnen automatisch von installierten Anwendungen erstellt werden.

So planen Sie Aufgaben mit Cron

Es klingt einfach: Um Aufgaben zu planen, fügen Sie sie einfach zu Ihrer Crontab hinzu. Da crontab eine spezielle Konfigurationsdatei ist, wird nicht empfohlen, sie manuell zu bearbeiten. Verwenden Sie stattdessen die

crontab -e

Befehl. Um die Crontabs von Root oder anderen Benutzern zu bearbeiten, führen Sie den Befehl mit Administratorrechten aus und fügen Sie ihren Benutzernamen nach der Option -u hinzu:

sudo crontab -u root -e
sudo crontab -u username -e

Die crontab-Datei besteht aus zwei Abschnitten. Die erste enthält Umgebungsvariablen, die automatisch eingerichtet werden. Sie können die Variablen PATH, HOME und SHELL sicher ändern und die Variable MAIL ändern.

Der zweite Teil der Datei ist der eigentliche 'Stundenplan' mit Ihren geplanten Aufgaben. Jede Aufgabe belegt eine Zeile (Zeile) in der Tabelle mit Spalten, die die folgenden Werte darstellen:

Um Aufgaben erfolgreich planen zu können, müssen Sie die crontab-Syntax kennen:

  • Die Zahlen sollten ganze Zahlen (ganze Zahlen) sein, und Sie können das Sternchen (*) in jeder der Spalten als Platzhalter verwenden, was 'jede Minute/Tag/Monat...' bedeutet.
  • Achten Sie in der Spalte 'Tag des Monats' darauf, kein Datum festzulegen, das nicht in dem in der Spalte 'Monat' angegebenen Monat liegt (z. B. 30. Februar).
  • Sowohl die Spalten 'Monat' als auch 'Tag der Woche' akzeptieren Kurznamen für Monate bzw. Tage, und die Groß-/Kleinschreibung wird nicht beachtet.
  • In der Spalte „Wochentag“ stehen sowohl 0 als auch 7 für Sonntag. Die Spalte „Stunde“ erfordert das Format „Militärzeit“ (24 Stunden), aber Sie können nicht die Zahl 24 verwenden – stattdessen steht 0 für 12 Uhr. Dies liegt daran, dass die Werte für Minute, Stunde und Wochentag beginnen bei 0 statt 1.
  • Sekunden werden nicht unterstützt, daher können Sie eine Aufgabe nicht zu einer bestimmten Sekunde planen.

Was Sie tun können, ist, inklusive Zeitbereiche mit einem Bindestrich zu planen (14-22 unter 'Stunden' wird die Aufgabe kontinuierlich von 14:00 bis 22:00 Uhr ausführen) oder eine einzelne Aufgabe mehrmals ausführen, indem Sie eine durch Kommas getrennte Liste definieren (1, 3,5 unter 'Wochentag' wird die Aufgabe am Montag, Mittwoch und Freitag ausgeführt).

In der Zwischenzeit werden Schrittwerte durch einen Schrägstrich (/) dargestellt, und diese geben die Anzahl der Sprünge innerhalb eines Bereichs an; 3-20/3 unter 'Stunden' führt die Aufgabe beispielsweise alle drei Stunden von 3:00 bis 20:00 Uhr aus. Dies ist nützlich, wenn Sie Aufgaben alle X Stunden wiederholen möchten, da Sie ein Sternchen und einen Schritt (*/X) kombinieren können. Sie können Bereiche mit Listen und Schritte mit Bereichen kombinieren, solange Sie Zahlen verwenden. Mit anderen Worten, Kombinationen wie 'Jan-Mar' oder 'Di,Fr-So' sind nicht erlaubt.

Alternativ können Sie, anstatt für jede Spalte einen Wert festzulegen, einfach @weekly, @yearly, @monthly, @daily oder @hourly an den Anfang einer Zeile schreiben, gefolgt von einem Befehl. So geplant werden die Aufgaben bei der erstmöglichen Instanz ausgeführt, also würde @weekly am ersten Tag der Woche um Mitternacht ausgeführt. Wenn Sie eine Aufgabe sofort beim (Neu-)Start des Systems ausführen möchten, verwenden Sie den Befehl @reboot.

In diesem Beispiel haben wir jeden Tag um 08:20 und 20:20 Uhr eine Sicherung geplant. Das Hintergrundbild wechselt automatisch alle drei Tage um 19:00 Uhr und ein Skript sucht jeden Montag um 10:20 und 20:20 Uhr nach neuen Podcasts. Eine Geburtstagserinnerung ist für den 25. März festgelegt und wird alle 30 Minuten innerhalb des angegebenen Zeitrahmens ausgeführt. Schließlich überprüft ein Skript die E-Mails alle 15 Minuten von 8 bis 20, aber nur an Werktagen. Es steht Ihnen frei, Ihre Crontab mit Leerzeichen und Tabulatoren zwischen den Spalten zu organisieren, aber nicht innerhalb dieser (fügen Sie keine Leerzeichen zwischen Kommas, Bindestrichen und Schrägstrichen ein).

Wenn das alles zu kompliziert klingt, machen Sie sich keine Sorgen – Sie können sich immer auf das Internet verlassen. Werkzeuge wie Crontab-Generator , Crontab.guru , und Corntab helfen Ihnen, Cron-Jobs zu erstellen, ohne die Crontab-Syntax zu kennen. Sie zeigen Ihnen, wann der Job als nächstes ausgeführt wird, und bieten Vorlagen für häufig verwendete Ausdrücke. Crontab.guru ist das Beste im Bunde, da Sie die Crontab-Syntax live testen können, sodass Sie sofort sehen können, wie sich Ihre Änderungen auf den Zeitplan auswirken.

So überprüfen Sie, ob Cron-Jobs ausgeführt werden

Cron soll leise im Hintergrund laufen und Sie ungestört arbeiten lassen, während es sich um Ihre Aufgaben kümmert. Aber wie können Sie sicherstellen, dass es tatsächlich funktioniert?

Cron verfügt über eine integrierte E-Mail-Benachrichtigungsfunktion, die jedoch die Einrichtung mindestens eines einfachen lokalen Mailservers erfordert. Nicht viele Heimanwender sind bereit, dies zu konfigurieren, und nicht viele Distributionen bieten dies standardmäßig an (z. B. Ubuntu nicht). Der schnellste Weg, um Cron zu überprüfen, besteht darin, das Systemprotokoll mit diesem Befehl zu scannen:

cat /var/log/syslog | grep -i cron

Die Option -i macht unsere Abfrage unabhängig von der Groß-/Kleinschreibung. Es ist möglich, dass cron irgendwo in eine eigene Protokolldatei hat

/var/log/

, also schauen Sie dort nach, wenn dieser Befehl keine brauchbaren Ergebnisse liefert.

Wenn Sie die Ausgabe eines bestimmten Cron-Jobs speichern müssen, können Sie sie in eine Datei umleiten. Geben Sie den Pfad und den Namen der Datei in der letzten Spalte Ihrer Crontab nach dem Befehl an, den Sie ausführen möchten:

30 * * * * /usr/bin/yourcommand > /home/username/logfile.txt

Die Verwendung eines einzelnen >-Symbols überschreibt die Datei jedes Mal, wenn der Befehl ausgeführt wird. Um dies zu vermeiden, verwenden Sie stattdessen >> -- es hängt die Ausgabe an die vorhandene Datei an.

Was ist, wenn Cron nicht funktioniert?

Es kann vorkommen, dass Sie einige Aufgaben hinzugefügt, die Systemprotokolle überprüft und festgestellt haben, dass sie nicht wie vorgesehen ausgeführt werden. Hier sind einige Dinge, die Sie beachten sollten – und mit denen Sie vorsichtig sein sollten – wenn Sie versuchen, das Problem zu beheben.

Läuft der Cron-Dienst?

Wie Sie wissen, sollte der Cron-Daemon im Hintergrund laufen. Stellen Sie sicher, dass dies wirklich der Fall ist. Der Dienst heißt entweder crond oder einfach cron.

Für Distributionen, die systemd verwenden:

systemctl status cron

Für Verteilungen mit Upstart:

service cron status

Wenn Ihre Distribution den 'alten' System V-Init-Ansatz verwendet, listen Sie alle Dienste auf mit:

So zeichnen Sie ein Live-Gespräch auf dem iPhone auf
initctl list

und sehen Sie, ob cron aufgeführt ist.

Dürfen Sie überhaupt eine crontab-Datei haben?

Überprüfe dein

/etc

Ordner für Dateien mit dem Namen

cron.allow

und

cron.deny

. Unter Ubuntu sollte beides nicht existieren, was bedeutet, dass alle Benutzer Cron-Jobs verwalten dürfen. Wenn es jedoch ein

Offline-GPS für Android kostenloser Download
cron.allow

Datei muss sie Ihren Benutzernamen enthalten. Umgekehrt, wenn die

cron.deny

Datei existiert, sollte Ihr Benutzername nicht darin enthalten sein. Etwas verlassen

cron.deny

Datei leer bedeutet, dass nur Root und Benutzer aufgelistet in

cron.allow

kann crontab-Dateien haben.

Sind Ihre Variablen richtig eingestellt?

Crontab setzt Ihre SHELL-Variable automatisch auf

/bin/sh

. Wie auch immer, wenn deine schale deiner wahl ist fisch oder bash, sollten Sie die SHELL-Variable ändern

. Ebenso enthält die Variable PATH standardmäßig nur wenige Verzeichnisse. Hier sucht crontab nach Linux-Befehlen. Wenn Ihr Cron-Job nicht ausgeführt wird, kann dies daran liegen, dass crontab den von Ihnen verwendeten Befehl nicht 'sieht'. Um dies zu vermeiden, fügen Sie der PATH-Variablen Verzeichnisse mit den Befehlen hinzu, getrennt durch Doppelpunkte:

PATH=/opt/myapp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Wenn Sie dies nicht in Ihrer Crontab bearbeiten möchten, können Sie diese Variablen in dem Skript definieren, das Sie als Cron-Job ausführen möchten.

Stimmt Ihre Crontab-Formatierung?

Die Crontab-Syntax ist nicht gerade reibungslos. Selbst wenn Sie dies mit den zuvor erwähnten Online-Tools überprüfen, kann ein kleiner Fehler immer noch verhindern, dass cron Ihre Jobs ausführt. Achten Sie auf:

  • füge eine leere Zeile am Ende der crontab-Datei hinzu
  • maskieren Sie das %-Zeichen mit einem Backslash, wenn Ihr Befehl es enthält
  • Schreiben Sie Kommentare als separate Zeilen, beginnend mit #. Schreiben Sie keine Kommentare in dieselbe Zeile wie die Umgebungsvariablen oder neben Cron-Jobbefehle.

Müssen Sie das Terminal wirklich benutzen?

Absolut nicht. KDE-Benutzer können Cron-Jobs mit KCron planen, das über das Systemeinstellungen > Aufgabenplaner Modul. Mit einer unkomplizierten Benutzeroberfläche, mit der Sie alles mit nur wenigen Mausklicks auswählen und optimieren können, ist die Verwendung von KCron ein Vergnügen.

Wenn Sie GNOME bevorzugen, dann GNOME-Zeitplan ist für Sie. Der Ansatz ist ähnlich, obwohl die Schnittstelle erwartungsgemäß etwas anders ist. Es bietet einen erweiterten Modus für fein abgestimmte Änderungen und wird mit einem Panel-Applet geliefert, über das Sie Aufgaben direkt verwalten können.

Sie sollten sich anderer Lösungen bewusst sein, wie z Crontab-Benutzeroberfläche und Minicron . Sie eignen sich eher für Benutzer, die mehrere Maschinen und Cron-Jobs verwalten, und eine ihrer coolsten Funktionen ist die webbasierte Benutzeroberfläche.

Gibt es Cron-Alternativen?

Cron ist zwar so ziemlich der Standard-Aufgabenplaner für Linux, aber sicherlich nicht der einzige. Die auf Befehl ist perfekt für schnelle, einmalige Jobs, die direkt von der Befehlszeile aus geplant werden können, ohne spezielle Konfigurationsdateien. Wenn Sie mehr brauchen, gibt es GNUbatch , die den Begriff der Abhängigkeit einführt. Mit GNUbatch können Sie für jeden Job bestimmte Bedingungen festlegen oder eine geplante Aufgabe von einer vorherigen abhängig machen. Ähnliches kann erreicht werden mit System-Timer . Obwohl die Konfiguration weniger praktisch ist als cron, können sich systemd-Timer merken, wenn eine Aufgabe ihren Zeitplan verpasst hat, während der Computer ausgeschaltet war, und sie beim nächsten Einschalten ausführen.

Cron kann dies nicht alleine tun. Als solches ist es für Server und Computer geeignet, die ständig ausgeführt werden, aber es führt keinen Job aus, der geplant wurde, während der Computer ausgeschaltet war. Das ist wo Anacron kommt ins Spiel. Es ist technisch gesehen keine 'Alternative' oder ein Ersatz für Cron. Stattdessen ergänzt anacron cron und sollte parallel dazu verwendet werden, was bei vielen Linux-Distributionen der Fall ist, einschließlich Ubuntu und Ubuntu-basierten Produkten. Anacron protokolliert, wann eine Aufgabe zuletzt ausgeführt wurde und prüft, ob bei ausgeschaltetem System Instanzen verpasst wurden. Es führt sie aus, wenn Sie den Computer wieder einschalten, aber jede Aufgabe kann nur einmal pro Tag ausgeführt werden.

Einige Versionen von cron, wie z. B. fcron, bieten standardmäßig die Funktionen von Anacron. Fortgeschrittene Benutzer sollten sich das ansehen Hcron oder SuperCron , die viele Verbesserungen der grundlegenden Cron-Funktionen mit sich bringen, aber auch etwas schwierig zu verwalten sind.

Was ist mit dir? Wie organisieren Sie Ihre digitalen Aufgaben? Welche Aufgaben planen Sie unter Linux? Teile deine Geschichten und Tipps zur Verwendung von Cron in den Kommentaren.

Bildnachweis: Zeitplantafel von Gonzalo Aragon über Shutterstock

Teilen Teilen Tweet Email 12 Videoseiten, die besser sind als YouTube

Hier sind einige alternative Videoseiten zu YouTube. Sie besetzen jeweils eine andere Nische, aber es lohnt sich, sie zu Ihren Lesezeichen hinzuzufügen.

Weiter lesen
Verwandte Themen
  • Linux
  • Linux
Über den Autor Ivana Isadora Devcic(24 Artikel veröffentlicht)

Ivana Isadora ist freiberufliche Autorin und Übersetzerin, Linux-Liebhaberin und KDE-Fangirl. Sie unterstützt und fördert freie und Open-Source-Software und ist immer auf der Suche nach frischen, innovativen Apps. Finden Sie heraus, wie Sie mit uns in Kontakt treten können Hier .

Mehr von Ivana Isadora Devcic

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren