Planen von Aufgaben in Linux mit Cron und Crontab
Wussten Sie das? Blade Runner ist im Jahr 2019 eingestellt? In drei Jahren! Ganz zu schweigen von Zurück in die Zukunft 2, wo sie Zeitreise in das Jahr 2015 machen. Doch 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 fiktionalen Darstellungen der Zukunft vergleichen. Heutzutage können unsere Telefone, Computer und sogar Häuser erstaunliche Dinge tun. 5 Heimwerkerprojekte für den Heimgebrauch 5 Erste Hausautomationsprojekte für den Einstieg in Ihr Smart Home Wenn es um die Erstellung intelligenter Häuser geht, sind die meisten Menschen davon überzeugt Ich weiß nur nicht wo ich anfangen soll. Hier sind fünf grundlegende Smart Home-Projekte für Anfänger, die Sie jetzt erstellen können. Weiterlesen . Die Fähigkeit, Aufgaben zu automatisieren, ist eine davon.
Jeder Linux-Benutzer kann von Zeitplanungsaufgaben profitieren, unabhängig davon, ob er systembezogen ist (z. B. das Bereinigen alter Protokolle und Aktualisieren von Paketen. Aktualisieren einer oder aller Apps unter Linux in Sekunden. Aktualisieren einer oder aller Apps unter Linux in Sekunden. Das Linux-Terminal macht es einfach, eine einzelne App auf Ihrem Computer zu aktualisieren oder alle verfügbaren Aktualisierungen gleichzeitig anzuwenden. Weitere Informationen finden Sie hier. Weitere Informationen) oder Benutzer bedienen (E-Mails abrufen, Podcasts herunterladen…). Windows-Benutzer hatten Taskplaner 4 langweilige Aufgaben, die Sie mit dem Windows-Taskplaner 4 automatisieren können; langweilige Aufgaben, die Sie mit dem Windows-Taskplaner automatisieren können Ihre Zeit ist zu wertvoll, um sich mit sich wiederholenden Aufgaben zu verschwenden. Lassen Sie sich von uns zeigen, wie Sie Aufgaben automatisieren und planen. Wir haben auch einige gute Beispiele. Lesen Sie mehr seit Windows 95. Das Dienstprogramm, das unter Linux den gleichen Job ausführt, heißt cron. Hier wird erklärt, wie es verwendet wird.
Was ist Cron??
Cron ist ein Systemdienst, der im Hintergrund ausgeführt wird, nach geplanten Tasks sucht und diese ausführt, falls er welche findet. Die Aufgaben - auch genannt “cron jobs 5 Einrichtungsideen für Einsteiger in Linux für Cron-Jobs und Shell-Skripts 5 Einsteiger-Ideen für Einsteiger in Linux für Cron-Jobs und Shell-Skripts Mit Bash-Skripten können Sie eine komplexe Reihe von Aufgaben in einem Arbeitsgang erledigen. Es ist auch eine gute Möglichkeit, das Terminal kennenzulernen. Weiterlesen ” - sind in speziellen Konfigurationsdateien (crontabs) definiert, die cron jede Minute scannt. Verschiedene Versionen von cron sind auf verschiedenen Linux-Distributionen verfügbar. Zum Beispiel wird Fedoras Gabel von cron cronie genannt, und es gibt auch fcron, bcron und dcron. Einige haben zusätzliche Funktionen, während andere mehr auf Sicherheit abzielen, aber sie basieren alle auf derselben Idee.
Dieses Handbuch wurde für vixie-cron geschrieben, die am weitesten verbreitete Version von cron und diejenige, die Sie unter Ubuntu und seinen Derivaten finden. Während die meisten Anweisungen auch für andere Cron-Implementierungen gelten, können geringfügige Unterschiede bestehen. Wenn Sie sich entscheiden, wechseln Sie in den Handbüchern.
Was ist ein Crontab??
Wenn Sie Ihre Zeit wirklich ernst nehmen möchten, haben Sie wahrscheinlich einen Kalender. Organisieren Sie Ihre Zeit mit diesen 4 Linux-Kalender-Apps. Organisieren Sie Ihre Zeit mit diesen 4 Linux-Kalender-Apps. Ist es sinnvoll, noch eine Desktop-Kalender-App zu verwenden? Wir sind der Meinung, dass insbesondere der Zugriff auf Ereignisse auf jedem synchronisierten Gerät möglich ist. Diese Linux-Kalender-Apps sind besonders nützlich. Lesen Sie mehr - eine App oder zumindest ein Blatt Papier. Crontab ist dem Kalender Ihres Computers sehr ähnlich. Es enthält die Informationen über geplante Aufgaben und informiert cron, welche Befehle zu welcher Zeit ausgeführt werden sollen.
Tatsächlich befinden sich mehrere Crontabs auf Ihrem System. Jeder Benutzer verfügt über eine eigene Crontab, einschließlich root (dem Administrator). Benutzer-Crontabs werden in gespeichert / var / spool / cron / crontabs /
. Das Crontab -l
Der Befehl listet die Crontab-Datei für den aktuellen Benutzer auf. Sie können die Wurzelcrontab mit überprüfen 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 Scripts, die sich im Besitz des Root-Besitzes befinden /etc/cron.hourly/
, /etc/cron.daily/
, /etc/cron.weekly/
, und /etc/cron.monthly/
Ordner und auf einigen Distributionen die /etc/cron.d/
Ordner auch. Im Allgemeinen sollten Sie sich nicht mit diesen Aufgaben befassen müssen, da die meisten Aufgaben automatisch von installierten Anwendungen erstellt werden.
So planen Sie Aufgaben mit Cron
Das klingt einfach: Um Aufgaben zu planen, fügen Sie sie einfach zu Ihrer Crontab. Da es sich bei crontab um eine spezielle Konfigurationsdatei handelt, wird eine manuelle Bearbeitung nicht empfohlen. Verwenden Sie stattdessen die Crontab -e
Befehl. Führen Sie den Befehl mit Administratorrechten aus, und fügen Sie seinen Benutzernamen nach der Option -u hinzu, um die crontabs von root oder anderer Benutzer zu bearbeiten:
Sudo Crontab -u Wurzel -e
Sudo Crontab -u Benutzername -e
Die Crontab-Datei hat zwei Abschnitte. 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 tatsächliche “Zeitplan” mit Ihren geplanten Aufgaben. Jede Aufgabe belegt eine Zeile (Zeile) in der Tabelle, deren Spalten die folgenden Werte darstellen:
Um Aufgaben erfolgreich planen zu können, 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 “jede Minute / Tag / Monat… ”.
- In dem “Monatstag” Geben Sie in dieser Spalte kein Datum ein, das nicht in dem in der Spalte angegebenen Monat liegt “Monat” Kolumne (zum Beispiel 30. Februar).
- Beide “Monat” und “Wochentag” Spalten akzeptieren kurze Namen für Monate bzw. Tage, und sie unterscheiden nicht zwischen Groß- und Kleinschreibung.
- In dem “Wochentag” In der Spalte stehen sowohl 0 als auch 7 für Sonntag. Das “Stunde” Spalte erfordert die “Wehrdienst” (24-Stunden-Format), aber Sie können die Zahl 24 nicht verwenden. Stattdessen steht 0 für 12 Uhr. Dies liegt daran, dass die Werte für Minute, Stunde und Wochentag bei 0 statt bei 1 beginnen.
- Sekunden werden nicht unterstützt, daher können Sie eine Aufgabe nicht auf eine bestimmte Sekunde planen.
Sie können inklusiv Zeitbereiche mit einem Bindestrich (14-22 unter “Std” führt die Aufgabe ab 14 Uhr ununterbrochen aus. bis 22.00 Uhr) oder führen Sie eine einzelne Task mehrmals aus, indem Sie eine durch Kommas getrennte Liste definieren (1,3,5 unter “Wochentag” führt die Aufgabe am Montag, Mittwoch und Freitag aus).
In der Zwischenzeit werden Schrittwerte durch einen Schrägstrich (/) dargestellt, der die Anzahl der Übersprünge innerhalb eines Bereichs angibt. zum Beispiel 3-20 / 3 unter “Std” führt die Aufgabe alle drei Stunden von 3 bis 20 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 mögen “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. Wenn dies so geplant ist, werden die Aufgaben in der ersten möglichen Instanz ausgeführt, sodass @weekly am ersten Tag der Woche um Mitternacht ausgeführt wird. Wenn Sie eine Task sofort ausführen möchten, wenn das System (erneut) startet, verwenden Sie den Befehl @reboot.
In diesem Beispiel haben wir jeden Tag um 08:20 und 20:20 eine Sicherung geplant. Das Hintergrundbild wechselt automatisch alle drei Tage um 19:00 Uhr. Ein Skript prüft, ob neue Podcasts verfügbar sind. Die 10 besten Apps zur Verwaltung von Podcasts unter Linux Die 10 besten Apps zur Verwaltung von Podcasts unter Linux Linux hat keine große Auswahl an Podcast-Clients. aber keine Sorge - fast jeder moderne Musikplayer für Linux kann als Podcatcher dienen. Lassen Sie uns einen Blick auf die Optionen werfen. Weitere Informationen finden Sie jeden Montag um 10:20 und 20:20 Uhr. Eine Geburtstagserinnerung ist für den 25. März festgelegt und läuft alle 30 Minuten innerhalb des angegebenen Zeitrahmens ab. Schließlich prüft ein Skript die E-Mails alle 15 Minuten von 8 bis 20, jedoch nur an Werktagen. Es steht Ihnen frei, Ihre Crontab mit Leerzeichen und Tabulatoren zwischen den Spalten zu organisieren, aber nicht in ihnen (keine Leerzeichen zwischen Kommas, Bindestrichen und Schrägstrichen)..
Wenn das alles zu kompliziert klingt, machen Sie sich keine Sorgen - Sie können sich immer auf das Internet verlassen. Mit Tools wie Crontab Generator, Crontab.guru und Corntab können Sie Cron-Jobs erstellen, ohne die 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 Sie die Crontab-Syntax live testen können, sodass Sie sofort sehen können, wie sich Ihre Änderungen auf den Zeitplan auswirken.
So prüfen Sie, ob Cron-Jobs ausgeführt werden
Cron soll ruhig im Hintergrund laufen und Sie können sich ungestört um Ihre Aufgaben kümmern. Aber wie können Sie sicherstellen, dass es tatsächlich funktioniert??
Cron verfügt über eine integrierte E-Mail-Benachrichtigungsfunktion. Dazu muss jedoch mindestens ein einfacher lokaler Mail-Server eingerichtet werden. Wie funktioniert ein E-Mail-Server? [Technologie erklärt] Wie funktioniert ein E-Mail-Server? [Technologie erklärt] Hinter jeder E-Mail steht eine leistungsstarke Engine, der E-Mail-Server, der die E-Mails durch das Internet leitet. Weiterlesen . Nicht viele Heimanwender sind bereit, dies zu konfigurieren, und nicht viele Distributionen bieten dies standardmäßig an (Ubuntu beispielsweise nicht). Die schnellste Möglichkeit, cron zu überprüfen, besteht darin, das Systemprotokoll mit diesem Befehl zu scannen:
cat / var / log / syslog | grep -i cron
Die Option -i macht die Abfrage unabhängig von der Groß- und Kleinschreibung. Es ist möglich, dass cron irgendwo eine eigene Protokolldatei hat / var / log /
, Schauen Sie dort nach, ob dieser Befehl keine nützlichen 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 / IhrBefehl> /home/username/logfile.txt
Die Verwendung eines einzelnen Symbols> überschreibt die Datei bei jeder Ausführung des Befehls. Um dies zu vermeiden, verwenden Sie stattdessen >> - die Ausgabe wird an die vorhandene Datei angehängt.
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 ordnungsgemäß ausgeführt werden. Hier sind einige Dinge, die Sie beachten sollten - und seien Sie vorsichtig -, wenn Sie versuchen, das Problem zu beheben.
Läuft der Cron-Dienst??
Wie Sie wissen, sollte der Cron-Daemon im Hintergrund ausgeführt werden. Stellen Sie sicher, dass dies wirklich der Fall ist. Der Service wird entweder crond oder cron genannt.
Für Distributionen mit systemd:
systemctl status cron
Für Distributionen mit Upstart:
service cron status
Wenn Ihre Distribution die “alt” System V Init-Ansatz, Liste aller Dienste mit:
initctl list
und sehen, ob Cron aufgeführt ist.
Darfst du überhaupt eine Crontab-Datei haben??
Überprüfe dein /usw
Ordner für Dateien mit dem Namen cron.allow
und cron.deny
. Unter Ubuntu sollte keines vorhanden sein, was bedeutet, dass alle Benutzer Cron-Jobs verwalten dürfen. Wenn es jedoch einen gibt cron.allow
Datei muss Ihren Benutzernamen enthalten. Umgekehrt, wenn die cron.deny
Datei existiert, Ihr Benutzername sollte nicht darin enthalten sein. Etwas verlassen cron.deny
Leere Datei bedeutet, dass nur Root und Benutzer in aufgeführt sind cron.allow
kann Crontab-Dateien haben.
Sind Ihre Variablen richtig eingestellt??
Crontab setzt Ihre SHELL-Variable automatisch auf / bin / sh
. Wenn jedoch die Shell der Wahl aus Fisch besteht 7 Gründe, warum Sie die Fish Shell installieren sollten 7 Gründe, warum Sie die Fish Shell installieren sollten Sie mögen nicht, wie Ihr Linux-Terminal funktioniert? Warum nicht eine neue Shell installieren? Eine solche Schale ist der Fisch, der Funktionen einführt, die alltäglich geworden sein sollten, aber nicht waren. Lass uns einen Blick darauf werfen. Lesen Sie mehr oder Bash, sollten Sie die SHELL-Variable ändern. Ebenso enthält die PATH-Variable standardmäßig nur wenige Verzeichnisse. Hier sucht crontab nach Linux-Befehlen. Wenn Ihr Cron-Job nicht ausgeführt wird, liegt dies möglicherweise daran, dass Crontab dies nicht tut “sehen” der Befehl, den Sie verwendet haben Um dies zu vermeiden, fügen Sie der PATH-Variablen Verzeichnisse hinzu, die die Befehle enthalten, 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.
Ist Ihre Crontab-Formatierung wichtig??
Die Crontab-Syntax ist nicht gerade reibungslos. Selbst wenn Sie dies mit den zuvor genannten Online-Tools überprüfen, kann ein geringfügiger Fehler verhindern, dass cron Ihre Jobs ausführt. Seien Sie vorsichtig bei:
- Fügen Sie am Ende der Crontab-Datei eine leere Zeile hinzu
- Das% -Zeichen mit einem umgekehrten Schrägstrich entkommen, wenn Ihr Befehl es enthält
- Schreiben Sie Kommentare als separate Zeilen, die mit # beginnen. Schreiben Sie keine Kommentare in die gleiche Zeile wie die Umgebungsvariablen oder neben Cron-Jobbefehlen.
Müssen Sie das Terminal wirklich benutzen??
Absolut nicht. KDE-Benutzer können Cron-Jobs mit KCron einplanen Systemeinstellungen> Taskplaner Modul. Mit einer einfachen Benutzeroberfläche, mit der Sie alles mit nur wenigen Mausklicks auswählen und anpassen können, ist die Verwendung von KCron ein Vergnügen.
Wenn Sie GNOME bevorzugen, ist GNOME Schedule genau das Richtige für Sie. Der Ansatz ist ähnlich, obwohl sich die Schnittstelle erwartungsgemäß etwas unterscheidet. Es bietet einen erweiterten Modus für feinkörnige Änderungen und ein Panel-Applet, mit dem Sie Aufgaben direkt verwalten können.
Sie sollten andere Lösungen kennen, wie Crontab-UI und Minicron. Sie eignen sich eher für Benutzer, die mehrere Maschinen und Cron-Jobs verwalten, und eine der coolsten Funktionen ist die webbasierte Benutzeroberfläche.
Gibt es irgendwelche Cron-Alternativen??
Während Cron so ziemlich der Standard-Taskplaner für Linux ist, planen und automatisieren Sie Aufgaben in Linux mit Gnome. Planen Sie und automatisieren Sie Aufgaben unter Linux mit Gnome. Der Befehl at ist ideal für schnelle einmalige Jobs, die ohne spezielle Konfigurationsdateien direkt von der Befehlszeile aus geplant werden können. Wenn Sie mehr benötigen, gibt es GNUbatch, das den Begriff der Abhängigkeit einführt. Mit GNUbatch können Sie spezifische Bedingungen für jeden Job festlegen oder eine geplante Task von einer vorherigen abhängig machen. Ähnliches kann mit systemd Zeitgebern erreicht werden. Systemd-Timer sind zwar weniger praktisch zu konfigurieren als cron, können sich aber erinnern, wenn eine Aufgabe ihren Zeitplan verfehlt hat, während der Computer ausgeschaltet war, und sie beim nächsten Einschalten ausführen.
Dies ist etwas, was Cron nicht alleine tun kann. Daher eignet es sich für Server und Computer, die ständig ausgeführt werden, führt jedoch 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. Anacron ergänzt stattdessen cron und sollte parallel dazu verwendet werden. Dies ist bei vielen Linux-Distributionen der Fall, einschließlich Ubuntu und Ubuntu-basierten Produkten. Anacron protokolliert, wann eine Task zuletzt ausgeführt wurde, und prüft, ob beim Ausschalten des Systems fehlende Instanzen aufgetreten sind. Es wird ausgeführt, wenn Sie den Computer wieder einschalten, aber jede Aufgabe kann nur einmal pro Tag ausgeführt werden.
Einige Versionen von cron, wie zum Beispiel fcron, bieten standardmäßig die Funktionen von anacron. Fortgeschrittene Benutzer möchten sich vielleicht Hcron oder SuperCron anschauen, die viele Verbesserungen der grundlegenden Cron-Funktionen mit sich bringen, deren Verwaltung jedoch auch etwas schwierig ist.
Was ist mit dir? Wie organisieren Sie Ihre digitalen Aufgaben? Welche Aufgaben planen Sie unter Linux? Teilen Sie Ihre Geschichten und Tipps zur Verwendung von cron in den Kommentaren.
Bildnachweis: Zeitplan von Gonzalo Aragon via Shutterstock
Erfahren Sie mehr über: Linux.