So planen Sie Aufgaben in Linux mit Cron und Crontab

Die Fähigkeit, Aufgaben zu automatisieren, ist eine dieser futuristischen Technologien, die bereits vorhanden sind. Jeder Linux-Benutzer kann dank cron, einem einfach zu bedienenden Hintergrunddienst, von der Planung von System- und Benutzeraufgaben profitieren.

Die Fähigkeit, Aufgaben zu automatisieren, ist eine dieser futuristischen Technologien, die bereits vorhanden sind.  Jeder Linux-Benutzer kann dank cron, einem einfach zu bedienenden Hintergrunddienst, von der Planung von System- und Benutzeraufgaben profitieren.
Werbung

Wusstest du, dass Blade Runner im Jahr 2019 eingestellt wird? Das ist in drei Jahren! Ganz zu schweigen von Back to the Future 2, wo sie Zeitreisen in das Jahr 2015 machen. Doch wir haben keine fliegenden Autos und es gibt keine Replikanten (soweit ich weiß).

linux-cron-jobs-zitat

Es ist leicht, mit der aktuellen Technologie enttäuscht zu sein, wenn wir es mit fiktionalen Zukunftsdarstellungen vergleichen. Dennoch können unsere Telefone, Computer und sogar Häuser in diesen Tagen erstaunliche Dinge tun 5 DIY Hausautomation Projekte, um mit Ihrem Smart Home zu beginnen 5 DIY Hausautomation Projekte, um mit Ihrem Smart Home anzufangen Wenn es darum geht, intelligente Häuser, die meisten Menschen zu schaffen Ich weiß einfach nicht, wo ich anfangen soll. Hier sind fünf grundlegende Anfänger Smart Home-Projekte, die Sie jetzt bauen können. Weiterlesen . Die Fähigkeit, Aufgaben zu automatisieren, gehört dazu.

Jeder Linux-Benutzer kann von der Planung von Aufgaben profitieren, unabhängig davon, ob diese systembedingt sind (wie das Bereinigen alter Protokolle und das Aktualisieren von Paketen). Aktualisieren einer oder aller Apps unter Linux in Sekunden macht es einfach, eine einzelne App auf Ihrem Computer zu aktualisieren oder alle verfügbaren Updates auf einmal anzuwenden.Weitere Informationen) oder den Benutzer bedienen (E-Mails abrufen, Podcasts herunterladen ...). Windows-Benutzer hatten Taskplaner 4 Langweilige Aufgaben, die Sie mit dem Windows-Taskplaner automatisieren können 4 Langweilige Aufgaben, die Sie mit dem Windows-Taskplaner automatisieren können Ihre Zeit ist zu wertvoll, um mit sich wiederholenden Aufgaben verschwendet zu werden. Lassen Sie uns Ihnen zeigen, wie Sie Aufgaben automatisieren und planen. Wir haben auch ein paar großartige Beispiele. Lesen Sie mehr seit Windows 95. Das Dienstprogramm, das den gleichen Job unter Linux ausführt, heißt Cron, und hier erklären wir, wie man es benutzt.

Was ist Cron?

Cron ist ein Systemdienst, der im Hintergrund ausgeführt wird, nach geplanten Tasks sucht und diese ausführt, wenn er einen findet. Die Aufgaben - auch "cron jobs" genannt 5 Anfänger-Linux-Setup-Ideen für Cron-Jobs und Shell-Skripte 5 Linux-Anfänger-Setup-Ideen für Cron-Jobs und Shell-Skripts Mit Bash-Skripten können Sie komplexe Aufgaben auf einen Schlag erledigen aufwendige und sich wiederholende Bedürfnisse. Es ist auch eine gute Möglichkeit, Terminal kennen zu lernen. Read More "- sind in speziellen Konfigurationsdateien (Crontabs) definiert, die Cron jede Minute scannt. Mehrere Versionen von Cron können auf verschiedenen Linux-Distributionen gefunden werden. Zum Beispiel heißt Fedoras Cron-Gabel cronie, 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 der gleichen Idee.

Dieses Handbuch ist 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, können geringfügige Unterschiede bestehen. Überprüfen Sie daher deren Handbücher, wenn Sie sich für einen Wechsel entscheiden.

Was ist ein Crontab?

Wenn Sie es ernst meinen mit der Verwaltung Ihrer Zeit, haben Sie wahrscheinlich einen Kalender in Ihrer Organisation Organisieren Sie Ihre Zeit mit diesen 4 Linux-Kalender-Apps Organisieren Sie Ihre Zeit mit diesen 4 Linux-Kalender-Apps Macht es Sinn, immer noch eine Desktop-Kalender-App zu verwenden? Wir denken dies, insbesondere um den Zugriff auf Ereignisse auf jedem synchronisierten Gerät zu ermöglichen. Diese Linux-Kalender-Apps sind besonders nützlich. Lesen Sie mehr - eine App oder zumindest ein Stück Papier. Crontab ist dem Kalender Ihres Computers sehr ähnlich. Er enthält Informationen über geplante Aufgaben und teilt cron mit, welche Befehle zu welcher Zeit ausgeführt werden sollen.

In der Tat sind mehrere Crontabs auf Ihrem System. Jeder Benutzer hat seine eigene crontab, einschließlich root (der Administrator). Benutzer-Crontabs werden in /var/spool/cron/crontabs/ . Der Befehl crontab -l listet die Crontab-Datei für den aktuellen Benutzer auf. Sie können die root crontab mit sudo crontab -l überprüfen.

Außerdem 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 den /etc/cron.hourly/, /etc/cron.daily/, /etc/cron.weekly/ und /etc/cron.monthly/ sind Bei einigen Distributionen auch der Ordner /etc/cron.d/ . Im Allgemeinen sollten Sie sich nicht mit diesen Aufgaben 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, ist es nicht empfehlenswert, sie manuell zu bearbeiten. Verwenden Sie stattdessen den Befehl crontab -e . 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

linux-cron-jobs-crontab-editor

Die Crontab-Datei besteht aus zwei Abschnitten. Der erste enthält Umgebungsvariablen, die automatisch eingerichtet werden. Sie können die Variablen PATH, HOME und SHELL sicher ändern und die MAIL-Variable ä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:

linux-cron-jobs-crontab

Um Aufgaben erfolgreich zu planen, müssen Sie etwas über die Crontab-Syntax wissen:

  • Die Zahlen sollten Ganzzahlen (ganze Zahlen) sein, und Sie können das Sternchen (*) in jeder Spalte als Platzhalter verwenden, dh "jede Minute / Tag / Monat ...".
  • Stellen Sie in der Spalte "Tag des Monats" sicher, dass Sie kein Datum festlegen, das nicht in dem in der Spalte "Monat" angegebenen Monat auftritt (z. B. 30. Februar).
  • Die Spalten "Monat" und "Wochentag" akzeptieren kurze Namen für Monate bzw. Tage und berücksichtigen nicht die Groß- / Kleinschreibung.
  • In der Spalte "Wochentag" stehen 0 und 7 für Sonntag. Die Spalte "Stunde" benötigt das Format "Militärische Zeit" (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 0 statt 1.
  • Sekunden werden nicht unterstützt, sodass Sie eine Aufgabe nicht zu einer bestimmten Sekunde planen können.

Was Sie tun können, planen Sie inklusive Zeiträume mit einem Bindestrich (14-22 unter "Stunden" wird die Aufgabe dauernd von 14.00 bis 10.00 Uhr), oder führen Sie eine einzelne Aufgabe mehrmals durch Definieren einer durch Kommas getrennten Liste (1, 3, 5 unter "Tag der Woche" wird die Aufgabe am Montag, Mittwoch und Freitag ausführen.

In der Zwischenzeit werden Schrittwerte durch einen Schrägstrich (/) dargestellt, und diese geben die Anzahl der Übersprungen innerhalb eines Bereichs an; zum Beispiel, 3-20 / 3 unter "Stunden" wird die Aufgabe alle drei Stunden von 3.00 bis 20.00 Uhr ausführen. Dies ist nützlich, wenn Sie Aufgaben alle X Stunden wiederholen möchten, weil Sie ein Sternchen und einen Schritt kombinieren können (* / X). Sie können Bereiche mit Listen und Schritten mit Bereichen kombinieren, solange Sie Zahlen verwenden. Mit anderen Worten, Kombinationen wie "Jan-Mar" oder "Di, Fr-So" sind nicht erlaubt.

Anstatt einen Wert für jede Spalte festzulegen, können Sie alternativ einfach @weekly, @yearly, @monthly, @daily oder @hourly am Anfang einer Zeile schreiben, gefolgt von einem Befehl. So geplant, werden die Aufgaben in der ersten möglichen Instanz ausgeführt, sodass @weekly um Mitternacht am ersten Tag der Woche ausgeführt wird. Wenn Sie eine Aufgabe sofort beim Neustart des Systems ausführen möchten, verwenden Sie den Befehl @reboot.

linux-cron-jobs-crontab-Beispiel

In diesem Beispiel haben wir jeden Tag um 08:20 und 20:20 Uhr eine Sicherung geplant. Das Hintergrundbild ändert sich automatisch alle drei Tage um 19:00 Uhr, und ein Skript sucht nach neuen Podcasts. Die 10 besten Apps zur Verwaltung von Podcasts unter Linux Die 10 besten Apps zur Verwaltung von Podcasts unter Linux Linux bietet keine große Auswahl an Podcast-Clients. Aber keine Sorge - fast jeder moderne Musikplayer für Linux kann als Podcatcher dienen. Werfen wir einen Blick auf die Optionen. Mehr lesen jeden Montag um 10:20 und 20:20. Eine Geburtstagserinnerung ist für den 25. März festgelegt und wird alle 30 Minuten innerhalb des angegebenen Zeitraums ausgeführt. Schließlich überprüft ein Skript die E-Mails alle 15 Minuten von 8 bis 20, jedoch nur an Werktagen. Sie können Ihre Crontab mit Leerzeichen und Tabulatoren zwischen Spalten organisieren, aber nicht innerhalb von ihnen (setzen Sie keine Leerzeichen zwischen Kommas, Bindestrichen und Schrägstrichen).

Wenn das alles zu kompliziert klingt, keine Sorge - Sie können sich immer auf das Internet verlassen. Tools wie Crontab Generator, Crontab.guru und Corntab helfen Ihnen, Cron-Jobs zu erstellen, ohne eine Crontab-Syntax zu kennen. Sie zeigen Ihnen, wann der Job als nächstes ausgeführt wird, und stellen Vorlagen für häufig verwendete Ausdrücke bereit. Crontab.guru ist das Beste, weil es die Crontab-Syntax live testet, so dass Sie sofort sehen können, wie sich Ihre Änderungen auf den Zeitplan auswirken.

Linux-Cron-Jobs-Crontab-Guru

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

Cron soll ruhig 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 lokalen Mail-Servers erfordert. Wie funktioniert ein E-Mail-Server? [Technologie erklärt] Wie funktioniert ein E-Mail-Server? [Technology Explained] Hinter jeder E-Mail befindet sich eine leistungsstarke Engine namens E-Mail-Server, die die E-Mails über das Internet versendet. Weiterlesen . Nicht viele Heimanwender sind bereit, dies zu konfigurieren, und nicht viele Distributionen stellen es standardmäßig bereit (z. B. Ubuntu nicht). Der schnellste Weg, Cron zu überprüfen, besteht darin, das Systemprotokoll mit diesem Befehl zu scannen:

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

linux-cron-jobs-log

Die Option -i unterscheidet zwischen Groß- und Kleinschreibung. Es ist möglich, dass cron irgendwo in /var/log/ eine eigene Protokolldatei hat, also sehen Sie dort nach, ob dieser Befehl keine brauchbaren Ergebnisse liefert.

Wenn Sie die Ausgabe eines bestimmten Cron-Jobs speichern müssen, können Sie ihn 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

Wenn Sie ein einzelnes> Symbol verwenden, wird die Datei jedes Mal überschrieben, wenn der Befehl ausgeführt wird. Um dies zu vermeiden, verwenden Sie stattdessen >> - es hängt die Ausgabe an die vorhandene Datei an.

Was, wenn Cron nicht funktioniert?

Es kann vorkommen, dass Sie einige Aufgaben hinzugefügt, die Systemprotokolle überprüft und festgestellt haben, dass sie nicht ordnungsgemäß ausgeführt werden. Hier sind einige Dinge, die Sie beachten sollten - und vorsichtig sein - 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 nur cron.

Für Distributionen, die systemd verwenden:

systemctl status cron

Für Distributionen, die Upstart verwenden:

service cron status

linux-cron-jobs-service-status

Wenn Ihre Distribution den "alten" System V init-Ansatz verwendet, listen Sie alle Services auf mit:

initctl list

und sehen, ob Cron aufgeführt ist.

Kannst du sogar eine Crontab-Datei haben?

Überprüfen Sie Ihren Ordner /etc auf Dateien mit den Namen cron.allow und cron.deny . Unter Ubuntu sollte keines existieren, was bedeutet, dass alle Benutzer Cron-Jobs verwalten dürfen. Wenn jedoch eine cron.allow Datei vorhanden ist, muss sie Ihren Benutzernamen enthalten. Umgekehrt, wenn die Datei cron.deny existiert, sollte Ihr Benutzername nicht darin enthalten sein. Wenn Sie die Datei cron.deny leer lassen, bedeutet dies, dass nur root und Benutzer, die in cron.allow aufgelistet sind, crontab-Dateien haben können.

Sind Ihre Variablen richtig eingestellt?

Crontab setzt Ihre SHELL Variable automatisch auf /bin/sh . Allerdings, wenn Ihre Schale der Wahl Fisch ist 7 Gründe, warum Sie die Fischschale installieren sollten 7 Gründe, warum Sie die Fischschale installieren sollten Wie mag es nicht, wie Ihr Linux-Terminal funktioniert? Warum nicht eine neue Shell installieren? Eine solche Muschel ist Fisch, die Merkmale einführt, die alltäglich sein sollten, aber nicht. Lass uns einen Blick darauf werfen. Lesen Sie mehr oder bash, Sie sollten die SHELL-Variable ändern . Ebenso enthält die PATH-Variable standardmäßig nur einige wenige Verzeichnisse. Hier sucht crontab nach Linux-Befehlen. Wenn Ihr Cron-Job nicht ausgeführt werden kann, liegt dies möglicherweise daran, dass crontab den von Ihnen verwendeten Befehl nicht "sieht". Um dies zu vermeiden, fügen Sie Verzeichnisse, die die Befehle enthalten, der Variablen PATH 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 als Cron-Job ausgeführt werden soll.

Ist Ihre crontab Formatierung auf Punkt?

Crontab Syntax ist nicht gerade glatt Segeln. Selbst wenn Sie es mit den oben erwähnten Online-Tools überprüfen, kann ein kleiner Fehler dennoch verhindern, dass Cron Ihre Jobs ausführt. Sei vorsichtig:

  • Fügen Sie eine leere Zeile am Ende der Crontab-Datei hinzu
  • Umgehe das% -Zeichen mit einem umgekehrten Schrägstrich, wenn dein Befehl es enthält
  • Schreibe 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 einplanen, auf die Sie über das Modul Systemeinstellungen> Taskplaner zugreifen können. Mit einer übersichtlichen Oberfläche, mit der Sie alles mit nur wenigen Mausklicks auswählen und optimieren können, ist KCron ein Vergnügen.

linux-cron-jobs-kcron

Wenn Sie GNOME bevorzugen, dann ist GNOME Schedule genau das Richtige für Sie. Der Ansatz ist ähnlich, obwohl die Schnittstelle erwartungsgemäß geringfügig anders ist. Es bietet einen erweiterten Modus für detaillierte Anpassungen und wird mit einem Panel-Applet geliefert, mit dem Sie Aufgaben direkt verwalten können.

linux-cron-jobs-gnome-zeitplan

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

linux-cron-jobs-crontabi

Gibt es Cron-Alternativen?

Während Cron ist so ziemlich der Standard-Task-Scheduler für Linux Planen und Automatisieren von Aufgaben in Linux mit Gnome Zeitplan Planen und Automatisieren von Aufgaben in Linux mit Gnome Zeitplan Lesen Sie mehr, es ist sicherlich nicht die einzige. Der at-Befehl ist perfekt für schnelle, einmalige Jobs, die direkt von der Kommandozeile aus geplant werden können, ohne spezielle Konfigurationsdateien. Wenn Sie mehr benötigen, gibt es GNUbatch, was den Begriff der Abhängigkeit einführt. Mit GNUbatch können Sie bestimmte Bedingungen für jeden Job festlegen oder eine geplante Aufgabe von einer vorherigen abhängig machen. Ähnliches lässt sich mit Systemd-Timern erreichen. Obwohl Systemd-Timer weniger praktisch zu konfigurieren sind als cron, können sie sich daran erinnern, wenn ein Task seinen Zeitplan bei ausgeschaltetem Computer verpasst hat, und ihn beim nächsten Mal ausführen.

Dies ist etwas, das Cron nicht alleine machen kann. Daher eignet es sich für Server und Computer, die ständig ausgeführt werden, aber es führt keinen Job aus, der geplant wurde, während der Computer ausgeschaltet war. Hier kommt Anacron ins Spiel. Es ist technisch 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, wenn eine Aufgabe zuletzt ausgeführt wurde, und überprüft, ob es verpasste Instanzen gab, während das System ausgeschaltet war. Es wird ausgeführt, wenn Sie den Computer wieder einschalten, aber jede Aufgabe kann nur einmal am Tag ausgeführt werden.

Einige Versionen von cron, wie fcron, bieten standardmäßig Funktionen von anacron. Fortgeschrittene Benutzer möchten vielleicht Hcron oder SuperCron betrachten, die viele grundlegende Cron-Funktionen verbessern, aber auch etwas schwierig zu verwalten sind.

Was ist mit Ihnen? Wie organisieren Sie Ihre digitalen Aufgaben? Welche Aufgaben planen Sie unter Linux? Teilen Sie Ihre Geschichten und Tipps für die Verwendung von Cron in den Kommentaren.

Bildquelle: Spielplan von Gonzalo Aragon über Shutterstock

In this article