Crontab-Handbuch – Planen von Aufgaben unter Linux

Immer wieder die gleichen Aufgaben zu erledigen, sei es täglich, wöchentlich oder monatlich, ist eine Aufgabe, die je nach Komplexität mit der Zeit ermüdet und degeneriert, bei der wir sie beiseite lassen. Die Lösung für dieses Problem besteht darin, es so weit wie möglich zu automatisieren. So wie Windows ermöglicht es uns, bestimmte Aufgaben zu automatisieren, Linux bietet uns diese Option auch über Crontab an, aber nicht ausschließlich.

Wenn wir den Betrieb von Linux automatisieren wollen, sei es zum Erstellen einer Sicherungskopie, zum Erstellen von Berichten, zum Ändern der Konfiguration oder für irgendetwas anderes, besteht die Lösung darin, Crontab in Kombination mit Cron zu verwenden, da wir im Gegensatz zu Windows zwei benötigen Anwendungen minimal.

Crontab-Handbuch

Was ist Crontab?

Crontab ist eine Textdatei, in der Automatisierungen basierend auf einer Reihe von Parametern erstellt werden, also eine Textdatei gelesen von Cron . Beide Anwendungen sind in den meisten gängigen Linux-Distributionen nativ verfügbar, sodass es nicht erforderlich ist, ein Repository auf unserem Computer zu installieren, um sie verwenden zu können.

Crontab bietet uns eine Reihe von Skripten, eines pro Zeile, mit denen wir genau die gewünschte Zeit anpassen können um eine oder mehrere Aufgaben zu erledigen und ihre Wiederholungen im Laufe der Zeit. Tatsächlich leitet sich sein Name vom griechischen Wort ab Cronos , was Zeit bedeutet. Jedes Skript enthält Informationen über das genaue Datum, an dem es ausgeführt werden soll, wobei dieses Datum durch eine Reihe von Zahlen angezeigt wird. Zum Beispiel eine Schaltfläche. Das folgende Skript führt nfsfind jeden Sonntag um 5:30 Uhr morgens aus

30 5 * * 0 /usr/lib/fs/nfs/nfsfind

Die ersten beiden Zahlen stellen die Stunde dar, in der der Befehl ausgeführt wird, wobei die erste Zahl die Minute und die zweite die Stunden sind. Das von Crontab verwendete Zeitformat ist 24 Stunden. Wenn wir die Aufgabe also um 5 Uhr nachmittags ausführen möchten, wäre dies die Zahl 17. Die Sternchen stellen alle Werte dar, während die Zahl 0 Sonntagen entspricht.

Verwechseln Sie Cron nicht mit Crontab

Während Crontab es uns ermöglicht, unsere Systeme auszuführen Automatisierungen , werden diese, wenn auch nicht ausschließlich, mit der Cron-Anwendung ausgeführt, einer Anwendung, die im Hintergrund läuft und alle Aufgaben ausführt, die wir zuvor in Crontab konfiguriert haben. Diese Anwendung verwendet unsere Systemzeit, um sie auszuführen. Wenn wir also eine virtuelle Maschine verwenden, ist es wichtig, dass sowohl die Zeit der Gastmaschine als auch die unseres Computers immer gleich sind, da sonst die programmierte Zeit nicht stimmt richtig.

Cron liest den Inhalt der Crontab-Datei jede Minute, sodass wir sie jederzeit bearbeiten können, um Aufgaben auszuführen, die wir in derselben Sitzung ausführen möchten, ohne dass die Anwendung gezwungen werden muss, ihren Inhalt erneut zu lesen, um neue auszuführende Skripts zu finden.

Nicht alle Benutzer haben die Möglichkeit, Crontab-Dateien zu erstellen, um Systemaufgaben zu automatisieren. Der Systemadministrator hat die Möglichkeit, diese Option über die Datei cron.allow bzw. cron.den zuzulassen oder abzulehnen, Dateien, die sich in /etc/cron.do /etc/ befinden, je nach Version der Linux-Distribution, die wir haben. auf unserem Rechner installiert.

So automatisieren Sie Aufgaben unter Linux

Wie oben erwähnt, beginnen Crontab-Skripte mit dem Datum, an dem sie ausgeführt werden sollen, gefolgt vom Befehl. Die Crontab-Syntax lautet wie folgt.

Zeitplanmanagement

minuto hora día-del-mes mes día-de-la-semana ruta-comandos

  • Minute, dies kann von 0 bis 59 sein
  • Zeit, wie wir bereits erwähnt haben, verwendet Crontab die 24-Stunden-Zeit, sodass der Zahlenbereich von 0 bis 23 reicht.
  • Tag des Monats, in diesem Parameter gibt es nicht viel Geheimnis, da er von 1 bis 31 geht.
  • Monat, von 1 bis 12
    • Januar 1
    • Februar 2
    • März 3
    • April 4
    • Mai 5
    • Juni 6
    • Juli 7
    • August 8
    • September 9
    • Oktober 10
    • November 11
    • Dezember 12.
  • Wochentag von 0 bis 6, wobei Sonntag die Zahl 0 ist, obwohl einige Versionen von Crontab auch die Verwendung der Zahl 7 zulassen. Auf diese Weise ergibt sich der Code für die Wochentage
    • 0 Sonntag
    • 1 Montag
    • 2 dienstag
    • Mittwoch 3
    • 4 Donnerstag
    • 5 Freitag
    • 6 Samstag

Aber zusätzlich können wir auch den Stern (*) verwenden, um alle möglichen Werte einer Variablen anzugeben. Wenn wir mehrere Werte festlegen möchten, können wir dies durch das Komma (,) oder eine Reihe von Werten tun, die sie mit einem Bindestrich (-) trennen. Wir können auch verschiedene Schritte mit „/“ einstellen.

Wenn es immer noch nicht ganz klar ist, dann zeigen wir Ihnen die Zeitcodes, die wir verwenden können, um Aufgaben in Abhängigkeit von ihrer Periodizität periodisch auszuführen

  • 0 * * * * Unter Verwendung des Zeitcodes wird das Skript zu jeder vollen Stunde ausgeführt.
  • 0 0 * * * Das Skript wird jeden Tag nur einmal ausgeführt
  • 0 0 * * 0 Das Skript wird einmal pro Woche ausgeführt
  • 0 0 1 * * Wird einmal im Monat ausgeführt
  • 0 0 1 1 * Das Skript wird einmal im Jahr ausgeführt

Sobald wir uns darüber im Klaren sind, wie die Aufgabenplanung in Crontab funktioniert, erstellen wir als erstes die Datei, in der wir alle Prozesse erstellen, die wir mit dem folgenden Befehl automatisieren möchten

crontab nombre-archivo

Wenn wir kein neues erstellen möchten oder es bereits erstellt haben und bearbeiten möchten, verwenden wir diesen Befehl

crontab -e

Wenn wir die erstellte Crontab-Datei löschen möchten

crontab -d

Mit dem folgenden Befehl können wir alle Aufgaben auflisten, die in der Crontab-Datei enthalten sind

crontab -d

Systemadministratoren können die Verwendung von Systemautomatisierungen einschränken, indem sie die Dateien cron.allow oder cron.den bearbeiten, Dateien, die sich in /etc/cron.d/ oder /etc/ befinden, wenn wir ihren Speicherort nicht zuvor geändert haben.

Aufgaben automatisieren

Um die von uns erstellte Crontab-Datei zu bearbeiten, verwenden wir den in allen Linux-Distributionen enthaltenen Texteditor, obwohl wir sie auch direkt von Crontab aus bearbeiten können, indem wir die Variable -e hinzufügen.

nano nombrearchivo

Wir führen den numerischen Code ein, begleitet von Sternchen und dem Skript, das wir ausführen möchten. Als nächstes müssen wir Cron die Berechtigung erteilen, es auszuführen, sonst weiß es nichts von seiner Existenz und kann es niemals ausführen. Dazu verwenden wir den Befehl

chmod ugo+x nombrearchivo

Anfänglich scheint die Verwendung von Crontab zur Automatisierung von Aufgaben überhaupt nicht einfach zu sein und erinnert an die (fast übliche) Notwendigkeit von Linux, für praktisch alles auf die Befehlszeile zurückzugreifen, wodurch mehr Benutzer daran gehindert werden, Linux als Betriebssystem an einem Tag zu übernehmen. heutige Basis. .

Der Windows-Taskplaner verwendet eine grafische Oberfläche, die ohne die erforderlichen Kenntnisse nicht sehr einfach zu bedienen ist, jedoch viel intuitiver ist als die, die Linux über die Befehlszeile bietet.

Crontab und Cron Arbeitsbeispiel

Das erste, was wir tun müssen, um Aufgaben in Linux zu automatisieren, besteht darin, die Datei zu erstellen, in die wir alle Befehle einfügen, die wir zum Zeitpunkt der Konfiguration auf dem Computer ausführen möchten. In diesem Beispiel erstellen wir die Datei „test“, die für das Löschen aller Dateien und leeren Ordner im Verzeichnis tmp verantwortlich ist. Dazu geben wir den folgenden Befehl ein.

crontab prueba

Als nächstes müssen wir den Befehl eingeben (oder Befehle, die sie mit Semikolons „;“ ohne Anführungszeichen trennen). In diesem Beispiel werden wir Crontab verwenden, um die Dateien im tmp-Ordner zu löschen.

find /tmp -type f -empty -delete

Als nächstes bearbeiten wir die Datei, um den Zeitplan hinzuzufügen, d. h. wann die Aufgaben, die wir in die Datei eingegeben haben, ausgeführt werden sollen.

crontab -e

Damit es jeden Tag um 10 Uhr morgens ausgeführt wird, müssen wir 0 10 * * * vor das Skript einfügen und die Zeile wie folgt belassen

0 10 * * * find /tmp -type f -empty -delete

Wenn wir möchten, dass es zu einem anderen Zeitpunkt ausgeführt wird, müssen wir nur die Zahl 10 für die Stunde (im 24-Stunden-Format) ändern, in der es ausgeführt werden soll. Wir können auch die verwenden Zeitcodes die wir im Abschnitt Programmierungsverwaltung gezeigt haben, um es zu konfigurieren. Schließlich verwenden wir den folgenden Befehl, damit Cron die von uns erstellte Automatisierungsdatei ausführen kann.

[code]chmod ugo+x prueba

Alternativen zu Cron

Wie wir in den vorherigen Abschnitten erwähnt haben, ist Cron für die Ausführung der Befehle verantwortlich, die wir zuvor in Crontab eingegeben haben. Cron ist ein perfektes Tool für Teams, die 24 Stunden am Tag arbeiten, obwohl wir es auch an unseren Arbeitsplan anpassen können, selbst wenn es dem Team Ressourcen entzieht, während Aufgaben ausgeführt werden. Wenn wir nach einfacheren Optionen für Cron suchen, zeigen wir Ihnen einige der besten Alternativen.

Anacron

Mit Anacron können wir jederzeit die automatisierte Ausführung von Aufgaben für einen Tag, eine Woche oder einen Monat planen. Wenn der Computer ausgeschaltet ist, wird beim nächsten Start des Computers die Aufgabe ausgeführt, die wir zuvor in Crontab eingegeben haben. Wenn der Computer mit Cron am angegebenen Datum ausgeschaltet wird, wird die Aufgabe nicht ausgeführt, wenn wir den Computer einschalten. Anacron ist in den meisten Linux-Distributionen verfügbar und wir können es mit dem folgenden Befehl auf dem Computer installieren.

sudo apt install anacron

Cronie

Cronie bietet uns eine viel umfassendere Erfahrung als Cron und eine kleine Reihe von Anwendungen (darunter Anacron), mit denen wir Workflows sehr schnell und einfach über Crontab programmieren können. Im Gegensatz zu Anacron ist es zur Installation von Cronie nicht in den Linux-Repositories verfügbar, daher müssen wir seine Webseite besuchen GitHub um es herunterzuladen, oder verwenden Sie den folgenden Befehl.

wget https://github.com/cronie-crond/cronie/releases/download/cronie-1.6.1/cronie-1.6.1.tar.gz