One place for hosting & domains

      So automatisieren Sie Aufgaben mit Cron unter CentOS 8


      Eine frühere Version dieses Tutorials wurde von Shaun Lewis geschrieben.

      Einführung

      Cron ist ein zeitbasierter Daemon für die Feinterminierung, der in Unix-ähnlichen Betriebssystemen gefunden wird, einschließlich Linux-Distributionen. Cron wird im Hintergrund ausgeführt. Aufgaben, die mit Cron geplant werden, heißen „Cron-Aufträge“ und werden automatisch ausgeführt. Daher ist Cron nützlich für die Automatisierung von wartungsbezogenen Aufgaben.

      Dieser Leitfaden bietet einen Überblick über die Planung von Aufgaben mit Crons spezieller Syntax. Überdies erklärt er einige Kurzbefehle, mit deren Hilfe man das Planen von Aufträgen leichter schreiben und verstehen kann.

      Voraussetzungen

      Um diesen Leitfaden zu absolvieren, benötigen Sie Zugriff auf einen Computer, der CentOS 8 ausführt. Das könnte Ihr lokaler Rechner, ein virtueller Rechner oder ein virtueller privater Server sein.

      Egal, welchen Computer Sie für diesen Leitfaden benutzen – er sollte einen Benutzer ohne Rootberechtigung mit konfigurierten Administratorberechtigungen haben. Folgen Sie zur Einrichtung unserem Leitfaden zur Ersteinrichtung des Servers für CentOS 8.

      Installation von Cron

      Bei fast jeder Linux-Distribution ist Cron auf irgendeine Weise standardmäßig installiert. Wenn Sie jedoch einen CentOS-Rechner verwenden, auf dem Cron nicht installiert ist, können Sie es mit dnf installieren.

      Um Cron auf einem CentOS-Rechner zu installieren, aktualisieren Sie zuerst den lokalen Paketindex des Computers.

      Installieren Sie dann den Cron-Daemon mit dem folgenden Befehl:

      • sudo dnf install crontabs

      Dieser Befehl fordert Sie auf, zu bestätigen, dass Sie das Paket crontabs und seine Abhängigkeiten installieren möchten. Bestätigen Sie, indem Sie y und dann die EINGABETASTE drücken.

      Dadurch wird Cron auf Ihrem System installiert, aber den Daemon müssen Sie manuell starten. Außerdem müssen Sie sicherstellen, dass eine Ausführung bei jedem Server-Boot festgelegt ist. Sie können beide Aktionen mit dem Befehl systemctl ausführen.

      Um den Cron-Daemon zu starten, führen Sie folgenden Befehl aus:

      • sudo systemctl start crond.service

      Um einzustellen, dass Cron bei jedem Start des Servers ausgeführt wird, geben Sie Folgendes ein:

      • sudo systemctl enable crond.service

      Danach wird Cron auf Ihrem System installiert und Sie können mit der Planung von Aufträgen beginnen.

      So funktioniert Cron

      Cron-Jobs werden aufgezeichnet und in einer speziellen Datei namens crontab verwaltet. Jedes Benutzerprofil im System kann über ein eigenes crontab verfügen, bei dem Aufträge geplant werden können. Das ist unter /var/spool/cron/ gespeichert.

      Um einen Auftrag zu planen, müssen Sie nur Ihr crontab für die Bearbeitung öffnen und eine Aufgabe hinzufügen, die in Form eines Cron-Ausdrucks geschrieben wird. Die Syntax für Cron-Ausdrücke kann in zwei Elemente unterteilt werden: die Planung und der Befehl zur Ausführung.

      Der Befehl kann praktisch jeder Befehl sein, den Sie normalerweise auf der Befehlszeile ausführen würden. Die Planungs-Komponente der Syntax besteht aus 5 verschiedenen Feldern, die in folgender Reihenfolge geschrieben werden:

      FeldZulässige Werte
      Minute0–59
      Stunde0-23
      Tag des Monats1-31
      Monat1-12 oder JAN-DEC
      Tag der Woche0-6 oder SUN-SAT

      Zusammen werden Aufgaben, die in einem crontab geplant werden, wie folgt strukturiert:

      minute hour day_of_month month day_of_week command_to_run
      

      Hier ist ein funktionelles Beispiel eines Cron-Ausdrucks. Dieser Ausdruck führt jeden Dienstag um 17:30 Uhr den Befehl curl http://www.google.com aus:

      30 17 * * 2 curl http://www.google.com
      

      Außerdem gibt es einige Sonderzeichen, die Sie in die Planungs-Komponente eines Cron-Ausdrucks aufnehmen können, um die Planung zu erleichtern:

      • *: Ein Sternchen ist in einem Cron-Ausdruck ein Platzhalter, der „alle“ repräsentiert. Folglich wird eine Aufgabe, die mit * * * * * ...​​​ geplant wurde, jede Minute jeder Stunde an jedem Tag in jedem Monat ausgeführt.
      • ,: Kommas brechen die Planungswerte auf, um eine Liste zu bilden. Wenn Sie zu Beginn und in der Mitte jeder Stunde eine Aufgabe ausführen möchten, können Sie, anstatt zwei separate Aufgaben auszuschreiben (z. B. 0 * * * * ...​​​​​ und ​​​30 * * * * ...​​​), die gleiche Funktionalität mit einer erreichen (0,30 * * * * ...).
      • -: Ein Bindestrich stellt im Planungs-Feld einen Wertbereich dar. Anstatt 30 separate geplante Aufgaben für einen Befehl zu haben, den Sie in den ersten 30 Minuten jeder Stunde ausführen möchten (wie in 0 * * * * ...​​​, 1 * * * * ..., 2 * * * * ... usw.), können Sie es folgendermaßen festlegen: 0-29 * * * * ...​​​.
      • /: Sie können einen Schrägstrich mit einem Sternchen verwenden, um einen Schrittwert auszudrücken. Anstatt zum Beispiel acht separate Cron-Aufgaben auszuschreiben, um einen Befehl alle drei Stunden auszuführen (0 0 * * * ...​​​​​, ​​​​​​0 3 * * * ...​​​​​​, ​​​​​​0 6 * * * ...​​​​​​ usw.), können Sie es folgendermaßen festlegen: ​​​​​​0 */3 * * * ...​​​​​​. 

      Anmerkung: Sie können Schrittwerte nicht willkürlich ausdrücken. Sie können nur ganze Zahlen verwenden, die sich gleichmäßig in den vom betreffenden Feld erlaubten Bereich teilen lassen. Im Feld „Stunden“ könnten Sie nach einem Schrägstrich beispielsweise nur 1, 2, 3, 4, 6, 8 oder 12 eingeben.

      Hier sind weitere Beispiele für die Verwendung von Crons Planungs-Komponente:

      • * * * * * – Den Befehl jede Minute ausführen.
      • 12 * * * * – Den Befehl 12 Minuten nach jeder vollen Stunde ausführen.
      • 0,15,30,45 * * * * – Den Befehl alle 15 Minuten ausführen.
      • */15 * * * * – Den Befehl alle 15 Minuten ausführen.
      • 0 4 * * * – Den Befehl jeden Tag um 4:00 Uhr ausführen.
      • 0 4 * * 2-4 – Den Befehl jeden Dienstag, Mittwoch und Donnerstag um 4:00 Uhr ausführen.
      • 20,40 */8 * 7-12 * – Den Befehl 20 und 40 Minuten nach jeder achten Stunde jedes Tages der letzten 6 Monate des Jahres ausführen.

      Wenn etwas für Sie unklar ist oder wenn Sie beim Schreiben Ihrer eigenen Cron-Aufgaben Hilfe benötigen, bietet Cronitor einen praktischen Planungs-Ausdruck-Editor für Cron namens „Crontab Guru“, mithilfe dessen Sie überprüfen können, ob Ihre Pläne gültig sind.

      Crontabs verwalten

      Sobald Sie einen Zeitplan festgelegt haben und wissen, welchen Auftrag Sie ausführen möchten, müssen Sie ihn irgendwo ablegen, wo Ihr Daemon ihn lesen kann.

      Wie zuvor erwähnt ist ein crontab eine spezielle Datei, die den Zeitplan für die Aufträge enthält, die Cron ausführen wird. Diese sollen jedoch nicht direkt bearbeitet werden. Stattdessen wird empfohlen, den Befehl crontab zu verwenden. Dadurch können Sie das crontab Ihres Benutzerprofils bearbeiten, ohne Ihre Berechtigungen mit sudo zu ändern. Der Befehl crontab lässt Sie auch wissen, ob Sie Syntaxfehler im crontab haben. Eine direkte Bearbeitung wird dies nicht tun.

      Sie können Ihren crontab mit dem folgenden Befehl bearbeiten:

      Dadurch wird Ihr crontab in dem Standard-Texteditor Ihres Benutzerprofils geöffnet.

      Anmerkung: Auf neuen CentOS-8-Servern öffnet der Befehl crontab -e den crontab Ihres Benutzers standardmäßig mit vi. vi ist ein extrem leistungsfähiger und flexibler Texteditor. Er kann jedoch für Benutzer, die keine Erfahrung damit haben, schwer verständlich wirken.

      Wenn Sie einen einfacheren Texteditor als Ihren Standard-Editor für crontab verwenden möchten, können Sie nano als solchen installieren und konfigurieren.

      Installieren Sie dazu nano mit dnf:

      Wenn Sie aufgefordert werden, drücken Sie y und dann die EINGABETASTE, um zu bestätigen, dass Sie nano installieren möchten.

      Um nano als Ihren visuellen Standard-Editor Ihres Benutzerprofils einzustellen, öffnen Sie die Datei .bash_profile zur Bearbeitung. Nachdem Sie nano jetzt installiert haben, können Sie dies damit tun:

      Fügen Sie am unteren Ende der Datei die folgende Zeile hinzu:

      ~/.bash_profile

      . . .
      export VISUAL="nano"
      

      Dadurch wird die Umgebungsvariable VISUAL auf nano festgelegt. VISUAL ist eine Unix-Umgebungsvariable, die viele Programme – einschließlich crontab – zur Bearbeitung einer Datei aufrufen. Speichern und schließen Sie die Datei nach dem Hinzufügen dieser Zeile, indem Sie STRG + X, Y, dann die EINGABETASTE drücken.

      Laden Sie dann .bash_profile neu, damit die Shell die neue Änderung aufnimmt:

      Im Editor können Sie jeden Auftrag für Ihren Zeitplan auf einer neuen Zeile eingeben. Andernfalls können Sie den crontab vorerst speichern und schließen. Wenn Sie Ihren crontab mit vi, dem Standard-Texteditor von CentOS 8, geöffnet haben, können Sie das tun, indem Sie ESC drücken, um sicherzustellen, dass Sie sich im Befehlsmodus von vi befinden. Dann geben Sie :x ein und drücken die EINGABETASTE.

      Bitte beachten Sie, dass auf Linux-Systemen ein weiteres crontab unter dem Verzeichnis /etc/ gespeichert ist. Dies ist ein systemweites crontab, das ein zusätzliches Feld für das Benutzerprofil hat, unter dem jeder Cron-Auftrag ausgeführt werden soll. Dieses Tutorial konzentriert sich auf benutzerspezifische crontabs. Wenn Sie den systemweiten crontab bearbeiten möchten, können Sie das mit dem folgenden Befehl tun:

      Wenn Sie den Inhalt Ihres crontab anzeigen, ihn aber nicht bearbeiten möchten, können Sie folgenden Befehl verwenden:

      Sie können Ihren crontab mit dem folgenden Befehl löschen:

      Warnung: Der folgende Befehl wird Sie nicht auffordern, zu bestätigen, dass Sie Ihren crontab löschen möchten. Führen Sie ihn nur aus, wenn Sie sicher sind, dass Sie ihn löschen möchten.

      Dieser Befehl löscht den crontab des Benutzers sofort. Sie können jedoch das Flag -i inkludieren, damit der Befehl Sie auffordert, zu bestätigen, dass Sie den crontab des Benutzers tatsächlich löschen möchten:

      Output

      crontab: really delete sammy's crontab?

      Wenn Sie aufgefordert wird, müssen Sie y eingeben, um den crontab zu löschen, oder n, um die Löschung abzubrechen.

      Cron-Auftrags-Ausgabe verwalten

      Da Cron-Aufträge im Hintergrund ausgeführt werden, ist nicht immer erkennbar, dass sie erfolgreich ausgeführt wurden. Sie wissen bereits, wie Sie den Befehl crontab verwenden und einen cron-Auftrag planen können. Jetzt können Sie verschiedene Möglichkeiten der Umleitung der Ausgabe von Cron-Aufträgen ausprobieren, damit Sie deren erfolgreiche Ausführung besser nachverfolgen können.

      Wenn ein mail transfer agent​​ – wie z. B. Sendmail – auf Ihrem Server installiert und richtig konfiguriert ist, können Sie die Ausgabe von Cron-Aufgaben an die E-Mail-Adresse senden, die mit Ihrem Linux-Benutzerprofil verknüpft ist. Sie können auch eine E-Mail-Adresse manuell angeben, indem Sie oben im crontab die Einstellung MAILTO bereitstellen.

      Sie können einem crontab beispielsweise die folgenden Zeilen hinzufügen. Dazu gehören eine MAILTO-Anweisung, gefolgt von einer Beispiels-E-Mail-Adresse, eine SHELL-Anweisung, die die Shell angibt, die ausgeführt werden soll (in diesem Fall bash), eine HOME-Anweisung, die auf den Pfad verweist, auf dem nach der Cron-Binärdatei gesucht werden soll, sowie eine einzelne Cron-Aufgabe:

      . . .
      
      MAILTO="example@digitalocean.com"
      SHELL=/bin/bash
      HOME=/
      
      * * * * * echo ‘Run this command every minute’
      

      Dieser spezielle Auftrag gibt „Diesen Befehl jede Minute ausführen“ zurück und diese Ausgabe wird jede Minute an die E-Mail-Adresse gesendet, die nach der MAILTO-Anweisung angegeben wurde.

      Sie können die Ausgabe einer Cron-Aufgabe auch in eine Protokolldatei oder an einen leeren Ort umleiten, um eine E-Mail mit der Ausgabe zu verhindern.

      Um die Ausgabe eines geplanten Befehls einer Protokolldatei anzufügen, fügen Sie >> am Ende des Befehls hinzu, gefolgt von dem Namen und dem Ort Ihrer gewünschten Protokolldatei. Das sieht folgendermaßen aus:

      * * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
      

      Nehmen wir an, Sie möchten Cron verwenden, um ein Skript auszuführen, aber Sie möchten es im Hintergrund ausführen. Dazu können Sie die Ausgabe des Skripts zu einem leeren Ort wie /dev/null umleiten, der alle Daten, die an ihn geschrieben werden, sofort löscht. Der folgende Cron-Auftrag führt z. B. ein PHP-Skript aus und führt es im Hintergrund aus:

      * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
      

      Dieser Cron-Auftrag leitet auch standard error – durch 2 dargestellt – zu Standard-Ausgabe um (>&1). Da die Standard-Ausgabe bereits auf /dev/null umgeleitet wird, ermöglicht dies dem Skript im Grunde eine stille Ausführung. Selbst wenn der crontab eine MAILTO-Anweisung enthält, wird die Ausgabe des Befehls nicht an die angegebene E-Mail-Adresse gesendet.

      Zugriff einschränken

      Mit den Dateien cron.allow und cron.deny können Sie verwalten, welche Benutzer den Befehl crontab verwenden dürfen. Beide sind im Verzeichnis /etc/ gespeichert. Wenn die Datei cron.deny vorhanden ist, wird jeder Benutzer, der in der Datei aufgeführt ist, an der Bearbeitung seines crontabs gehindert. Wenn cron.allow vorhanden ist, können nur Benutzer, die darin aufgelistet sind, ihre crontabs bearbeiten. Wenn beide Dateien vorhanden sind und der gleiche Benutzer in beiden Listen aufgeführt ist, überschreibt die Datei cron.allow die Datei cron.deny, und der Benutzer kann seinen crontab bearbeiten.

      Um beispielsweise allen Benutzern den Zugriff zu verwehren und dann dem Benutzer ishmael Zugriff zu geben, können Sie die folgende Befehlssequenz verwenden:

      • sudo echo ALL >>/etc/cron.deny
      • sudo echo ishmael >>/etc/cron.allow

      Wir sperren zunächst alle Benutzer, indem wir ALL an die Datei cron.deny anfügen. Indem wir dann den Benutzernamen an die Datei cron.allow anfügen, geben wir dem Benutzerprofil ishmael Zugriff zum Ausführen von Cron-Aufträgen.

      Beachten Sie, dass ein Benutzer mit sudo-Berechtigungen das crontab eines anderen Benutzers mit dem folgenden Befehl bearbeiten kann:

      Wenn jedoch cron.deny vorhanden ist und user darin aufgelistet ist und er nicht in cron.allow aufgelistet ist, erhalten Sie nach Ausführung des vorherigen Befehls den folgenden Fehler:

      Output

      The user user cannot use this program (crontab)

      Standardmäßig nehmen die meisten Cron-Daemons an, dass alle Benutzer Zugriff auf Cron haben, es sei denn, entweder cron.allow oder cron.deny ist vorhanden.

      Spezielle Syntax

      Es gibt auch verschiedene Kurzschriftbefehle, die Sie in Ihrer crontab-Datei verwenden können, um die Auftragsplanung zu optimieren. Diese sind im Grunde Shortcuts für den angegebenen entsprechenden numerischen Zeitplan:

      ShortcutKurzschrift für
      @hourly0 * * * *
      @daily0 0 * * *
      @weekly0 0 * * 0
      @monthly0 0 1 * *
      @yearly0 0 1 1 *

      Anmerkung: Nicht alle Cron-Daemons können diese Syntax analysieren (insbesondere ältere Versionen). Vergewissern Sie sich daher, dass es funktioniert, bevor Sie sich darauf verlassen.

      Zusätzlich führt die Kurzschrift @reboot jeden beliebigen Befehl aus, der ihr folgt, wenn der Server gestartet wird:

      @reboot echo "System start up"
      

      Verwenden Sie diese Shortcuts, wann immer es möglich ist, um die Auslegung des Aufgabenplans in Ihrem crontab zu erleichtern.

      Zusammenfassung

      Cron ist ein flexibles und leistungsfähiges Dienstprogramm, das die Belastung durch viele Aufgaben in Zusammenhang mit der Systemverwaltung verringern kann. In Kombination mit Shell-Skripts können Sie Aufgaben automatisieren, die normalerweise mühsam und kompliziert sind.



      Source link

      So automatisieren Sie Aufgaben mit Cron unter Ubuntu 18.04


      Eine frühere Version dieses Tutorials wurde von Shaun Lewis geschrieben.

      Einführung

      Cron ist ein zeitbasierter Daemon für die Feinterminierung, der in Unix-ähnlichen Betriebssystemen gefunden wird, einschließlich Linux-Distributionen. Cron wird im Hintergrund ausgeführt. Aufgaben, die mit Cron geplant werden, heißen „Cron-Aufträge“ und werden automatisch ausgeführt. Daher ist Cron nützlich für die Automatisierung von wartungsbezogenen Aufgaben.

      Dieser Leitfaden bietet einen Überblick über die Planung von Aufgaben mit Crons spezieller Syntax. Überdies erklärt er einige Kurzbefehle, mit deren Hilfe man das Planen von Aufträgen leichter schreiben und verstehen kann.

      Voraussetzungen

      Um diesen Leitfaden zu absolvieren, benötigen Sie Zugriff auf einen Computer, der Ubuntu 18.04 ausführt. Dies könnte Ihr lokalen Rechner, ein virtueller Rechner oder ein virtueller privater Server sein.

      Egal welchen Computer Sie für diesen Leitfaden benutzen – er sollte einen Benutzer ohne Rootberechtigung mit konfigurierten Administratorberechtigungen haben. Um dies einzurichten, folgen Sie unserem Leitfaden für die Ersteinrichtung des Servers unter Ubuntu 18.04.

      Installation von Cron

      Bei fast jeder Linux-Distribution ist Cron auf irgendeine Weise standardmäßig installiert. Wenn Sie jedoch einen Ubuntu-Rechner verwenden, auf dem Cron nicht installiert ist, können Sie es mit APT installieren.

      Um Cron auf einem Ubuntu-Rechner zu installieren, aktualisieren Sie zuerst den lokalen Paketindex des Computers.

      Installieren Sie dann Cron mit dem folgenden Befehl:

      Vergewissern Sie sich, dass auch die Ausführung im Hintergrund festgelegt ist:

      • sudo systemctl enable cron

      Output

      Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable cron

      Danach wird Cron auf Ihrem System installiert und Sie können mit der Planung von Aufträgen beginnen.

      So funktioniert Cron

      Cron-Aufträge werden aufgezeichnet und in einer speziellen Datei namens crontab verwaltet. Jedes Benutzerprofil im System kann über ein eigenes crontab verfügen, bei dem Aufträge geplant werden können. Das ist unter /var/spool/cron/crontabs/ gespeichert.

      Um einen Auftrag zu planen, müssen Sie nur Ihr crontab für die Bearbeitung öffnen und eine Aufgabe hinzufügen, die in Form eines Cron-Ausdrucks geschrieben wird. Die Syntax für Cron-Ausdrücke kann in zwei Elemente unterteilt werden: die Planung und der Befehl zur Ausführung.

      Der Befehl kann praktisch jeder Befehl sein, den Sie normalerweise auf der Befehlszeile ausführen würden. Die Planungs-Komponente der Syntax besteht aus 5 verschiedenen Feldern, die in folgender Reihenfolge geschrieben werden:

      FeldZulässige Werte
      Minute0-59
      Stunde0-23
      Tag des Monats1-31
      Monat1-12 oder JAN-DEC
      Tag der Woche0-6 oder SUN-SAT

      Zusammen werden Aufgaben, die in einem crontab geplant werden, wie folgt strukturiert:

      minute hour day_of_month month day_of_week command_to_run
      

      Hier ist ein funktionelles Beispiel eines Cron-Ausdrucks. Dieser Ausdruck führt jeden Dienstag um 17:30 Uhr den Befehl curl http://www.google.com aus:

      30 17 * * 2 curl http://www.google.com
      

      Außerdem gibt es einige Sonderzeichen, die Sie in die Planungs-Komponente eines Cron-Ausdrucks aufnehmen können, um die Planung zu erleichtern:

      • *: Ein Sternchen ist in einem Cron-Ausdruck ein Platzhalter, der „alle“ repräsentiert. Folglich wird eine Aufgabe, die mit * * * * * ...​​​ geplant wurde, jede Minute jeder Stunde an jedem Tag in jedem Monat ausgeführt.
      • ,: Kommas brechen die Planungswerte auf, um eine Liste zu bilden. Wenn Sie zu Beginn und in der Mitte jeder Stunde eine Aufgabe ausführen möchten, können Sie, anstatt zwei separate Aufgaben auszuschreiben (z. B. 0 * * * * ...​​​​​ und ​​​30 * * * * ...​​​), die gleiche Funktionalität mit einer erreichen (0,30 * * * * ...).
      • -: Ein Bindestrich stellt im Planungs-Feld einen Wertbereich dar. Anstatt 30 separate geplante Aufgaben für einen Befehl zu haben, den Sie in den ersten 30 Minuten jeder Stunde ausführen möchten (wie in 0 * * * * ...​​​, 1 * * * * ..., 2 * * * * ... usw.), können Sie es folgendermaßen festlegen: 0-29 * * * * ...​​​.
      • /: Sie können einen Schrägstrich mit einem Sternchen verwenden, um einen Schrittwert auszudrücken. Anstatt zum Beispiel acht separate Cron-Aufgaben auszuschreiben, um einen Befehl alle drei Stunden auszuführen (0 0 * * * ...​​​​​, ​​​​​​0 3 * * * ...​​​​​​, ​​​​​​0 6 * * * ...​​​​​​ usw.), können Sie es folgendermaßen festlegen: ​​​​​​0 */3 * * * ...​​​​​​.

      Anmerkung: Sie können Schrittwerte nicht willkürlich ausdrücken. Sie können nur ganze Zahlen verwenden, die sich gleichmäßig in den vom betreffenden Feld erlaubten Bereich teilen lassen. Im Feld „Stunden“ könnten Sie nach einem Schrägstrich beispielsweise nur 1, 2, 3, 4, 6, 8 oder 12 eingeben.

      Hier sind weitere Beispiele für die Verwendung von Crons Planungs-Komponente:

      • * * * * * – Den Befehl jede Minute ausführen.
      • 12 * * * * – Den Befehl 12 Minuten nach jeder vollen Stunde ausführen.
      • 0,15,30,45 * * * * – Den Befehl alle 15 Minuten ausführen.
      • */15 * * * * – Den Befehl alle 15 Minuten ausführen.
      • 0 4 * * * – Den Befehl jeden Tag um 4:00 Uhr ausführen.
      • 0 4 * * 2-4 – Den Befehl jeden Dienstag, Mittwoch und Donnerstag um 4:00 Uhr ausführen.
      • 20,40 */8 * 7-12 * – Den Befehl 20 und 40 Minuten an jeder achten Stunde jeden Tag der letzten 6 Monate des Jahres ausführen.

      Wenn etwas für Sie unklar ist oder wenn Sie beim Schreiben Ihrer eigenen Cron-Aufgaben Hilfe benötigen, bietet Cronitor einen praktischen Planungs-Ausdruck-Editor für Cron namens „Crontab Guru“, mithilfe dessen Sie überprüfen können, ob Ihre Pläne gültig sind.

      Crontabs verwalten

      Sobald Sie einen Zeitplan festgelegt haben und wissen, welchen Auftrag Sie ausführen möchten, müssen Sie ihn irgendwo ablegen, wo Ihr Daemon ihn lesen kann.

      Wie zuvor erwähnt ist ein crontab eine spezielle Datei, die den Zeitplan für die Aufträge enthält, die Cron ausführen wird. Diese sollen jedoch nicht direkt bearbeitet werden. Stattdessen wird empfohlen, den Befehl crontab zu verwenden. Dadurch können Sie das crontab Ihres Benutzerprofils bearbeiten, ohne Ihre Berechtigungen mit sudo zu ändern. Der Befehl crontab lässt Sie auch wissen, ob Sie Syntaxfehler im crontab haben. Eine direkte Bearbeitung wird dies nicht tun.

      Sie können Ihren crontab mit dem folgenden Befehl bearbeiten:

      Wenn Sie den Befehl crontab das erste Mal unter diesem Benutzerprofil ausführen, werden Sie aufgefordert, einen Standard-Texteditor für die Bearbeitung Ihres crontabs auszuwählen.

      Output

      no crontab for sammy - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano <---- easiest 2. /usr/bin/vim.basic 3. /usr/bin/vim.tiny 4. /bin/ed Choose 1-4 [1]:

      Geben Sie die Zahl ein, die dem Editor Ihrer Wahl entspricht. Alternativ können Sie einfach die EINGABETASTE drücken, um die Standardwahl nano zu akzeptieren.

      Nachdem Sie Ihre Auswahl getroffen haben, werden Sie zu einem neuen crontab gebracht, das einige auskommentierte Anweisungen zu dessen Anwendung enthält:

      # Edit this file to introduce tasks to be run by cron.
      #
      # Each task to run has to be defined through a single line
      # indicating with different fields when the task will be run
      # and what command to run for the task
      #
      # To define the time you can provide concrete values for
      # minute (m), hour (h), day of month (dom), month (mon),
      # and day of week (dow) or use '*' in these fields (for 'any').#
      # Notice that tasks will be started based on the cron's system
      # daemon's notion of time and timezones.
      #
      # Output of the crontab jobs (including errors) is sent through
      # email to the user the crontab file belongs to (unless redirected).
      #
      # For example, you can run a backup of all your user accounts
      # at 5 a.m every week with:
      # 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
      #
      # For more information see the manual pages of crontab(5) and cron(8)
      #
      # m h  dom mon dow   command
      

      Wenn Sie crontab -e in Zukunft ausführen, wird Ihr crontab automatisch in diesem Texteditor aufgerufen. Im Editor können Sie jeden Auftrag für Ihren Zeitplan auf einer neuen Zeile eingeben. Andernfalls können Sie das crontab vorerst speichern und schließen (CTRL + X, Y, dann die EINGABETASTE, wenn Sie nano ausgewählt haben).

      ​[note]
      Hinweis: Auf Linux-Systemen ist ein weiteres crontab unter dem Verzeichnis /etc/ gespeichert. Dies ist ein systemweites crontab, das ein zusätzliches Feld für das Benutzerprofil hat, unter dem jeder Cron-Auftrag ausgeführt werden soll. Dieses Tutorial konzentriert sich auf benutzerspezifische crontabs. Wenn Sie den systemweiten crontab bearbeiten möchten, können Sie das mit dem folgenden Befehl tun:

      Wenn Sie den Inhalt Ihres crontab anzeigen, ihn aber nicht bearbeiten möchten, können Sie folgenden Befehl verwenden:

      Sie können Ihren crontab mit dem folgenden Befehl löschen:

      Warnung: Der folgende Befehl wird Sie nicht auffordern, zu bestätigen, dass Sie Ihren crontab löschen möchten. Führen Sie ihn nur aus, wenn Sie sicher sind, dass Sie ihn löschen möchten.

      Dieser Befehl löscht den crontab des Benutzers sofort. Sie können jedoch das Flag -i inkludieren, damit der Befehl Sie auffordert, zu bestätigen, dass Sie den crontab des Benutzers tatsächlich löschen möchten:

      Output

      crontab: really delete sammy's crontab? (y/n)

      Wenn Sie aufgefordert wird, müssen Sie y eingeben, um den crontab zu löschen oder n, um die Löschung abzubrechen.

      Cron-Auftrags-Ausgabe verwalten

      Da Cron-Aufträge im Hintergrund ausgeführt werden, ist nicht immer erkennbar, dass sie erfolgreich ausgeführt wurden. Sie wissen bereits, wie Sie den Befehl crontab verwenden und einen Cron-Auftrag planen können. Jetzt können Sie verschiedene Möglichkeiten der Umleitung der Ausgabe von Cron-Aufträgen ausprobieren, damit Sie deren erfolgreiche Ausführung besser nachverfolgen können.

      Wenn ein mail transfer agent​​ – wie z. B. Sendmail – auf Ihrem Server installiert und richtig konfiguriert ist, können Sie die Ausgabe von Cron-Aufgaben an die E-Mail-Adresse senden, die mit Ihrem Linux-Benutzerprofil verknüpft ist. Sie können auch eine E-Mail-Adresse manuell angeben, indem Sie oben im crontab die Einstellung MAILTO bereitstellen.

      Sie können einem crontab beispielsweise die folgenden Zeilen hinzufügen. Dazu gehören eine MAILTO-Anweisung, gefolgt von einer Beispiels-E-Mail-Adresse, eine SHELL-Anweisung, die die Shell angibt, die ausgeführt werden soll (in diesem Fall bash), eine HOME-Anweisung, die auf den Pfad verweist, auf dem nach der Cron-Binärdatei gesucht werden soll, sowie eine einzelne Cron-Aufgabe:

      . . .
      
      MAILTO="example@digitalocean.com"
      SHELL=/bin/bash
      HOME=/
      
      * * * * * echo ‘Run this command every minute’
      

      Dieser spezielle Auftrag gibt „Diesen Befehl jede Minute ausführen“ zurück und diese Ausgabe wird jede Minute an die E-Mail-Adresse gesendet, die nach der MAILTO-Anweisung angegeben wurde.

      Sie können die Ausgabe einer Cron-Aufgabe auch in eine Protokolldatei oder an einen leeren Ort umleiten, um eine E-Mail mit der Ausgabe zu verhindern.

      Um die Ausgabe eines geplanten Befehls einer Protokolldatei anzufügen, fügen Sie >> am Ende des Befehls hinzu, gefolgt von dem Namen und dem Ort Ihrer gewünschten Protokolldatei. Das sieht folgendermaßen aus:

      * * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
      

      Nehmen wir an, Sie möchten Cron verwenden, um ein Skript auszuführen, aber Sie möchten es im Hintergrund ausführen. Dazu können Sie die Ausgabe des Skripts zu einem leeren Ort wie /dev/null umleiten, der alle Daten, die an ihn geschrieben werden, sofort löscht. Der folgende Cron-Auftrag führt z. B. ein PHP-Skript aus und führt es im Hintergrund aus:

      * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
      

      Dieser Cron-Auftrag leitet auch standard error – durch 2 dargestellt – zu Standard-Ausgabe um (>&1). Da die Standard-Ausgabe bereits auf /dev/null umgeleitet wird, ermöglicht dies dem Skript im Grunde eine stille Ausführung. Selbst wenn der crontab eine MAILTO-Anweisung enthält, wird die Ausgabe des Befehls nicht an die angegebene E-Mail-Adresse gesendet.

      Zugriff einschränken

      Mit den Dateien cron.allow und cron.deny können Sie verwalten, welche Benutzer den Befehl crontab verwenden dürfen. Beide sind im Verzeichnis /etc/ gespeichert. Wenn die Datei cron.deny vorhanden ist, wird jeder Benutzer, der in der Datei aufgeführt ist, an der Bearbeitung seines crontabs gehindert. Wenn cron.allow vorhanden ist, können nur Benutzer, die darin aufgelistet sind, ihre crontabs bearbeiten. Wenn beide Dateien vorhanden sind und der gleiche Benutzer in beiden Listen aufgeführt ist, überschreibt die Datei cron.allow die Datei cron.deny, und der Benutzer kann seinen crontab bearbeiten.

      Um beispielsweise allen Benutzern den Zugriff zu verwehren und dann dem Benutzer ishmael Zugriff zu geben, können Sie die folgende Befehlssequenz verwenden:

      • sudo echo ALL >>/etc/cron.deny
      • sudo echo ishmael >>/etc/cron.allow

      Wir sperren zunächst alle Benutzer, indem wir ALL an die Datei cron.deny anfügen. Indem wir dann den Benutzernamen an die Datei cron.allow anfügen, geben wir dem Benutzerprofil ishmael Zugriff zum Ausführen von Cron-Aufträgen.

      Beachten Sie, dass ein Benutzer mit sudo-Berechtigungen das crontab eines anderen Benutzers mit dem folgenden Befehl bearbeiten können:

      Wenn jedoch cron.deny vorhanden ist und user darin aufgelistet ist und er nicht in cron.allow aufgelistet ist, erhalten Sie nach Ausführung des vorherigen Befehls den folgenden Fehler:

      Output

      The user user cannot use this program (crontab)

      Standardmäßig nehmen die meisten Cron-Daemons an, dass alle Benutzer Zugriff auf Cron haben, es sei denn, entweder cron.allow oder cron.deny ist vorhanden.

      Spezielle Syntax

      Es gibt auch verschiedene Kurzschriftbefehle, die Sie in Ihrer crontab-Datei verwenden können, um die Auftragsplanung zu optimieren. Diese sind im Grunde Shortcuts für den angegebenen entsprechenden numerischen Zeitplan:

      ShortcutKurzschrift für
      @hourly0 * * * *
      @daily0 0 * * *
      @weekly0 0 * * 0
      @monthly0 0 1 * *
      @yearly0 0 1 1 *

      Anmerkung: Nicht alle Cron-Daemons können diese Syntax analysieren (insbesondere ältere Versionen). Vergewissern Sie sich daher, dass es funktioniert, bevor Sie sich darauf verlassen.

      Zusätzlich führt die Kurzschrift @reboot jeden beliebigen Befehl aus, der ihr folgt, wenn der Server gestartet wird:

      @reboot echo "System start up"
      

      Verwenden Sie diese Shortcuts, wann immer es möglich ist, um die Auslegung des Aufgabenplans in Ihrem crontab zu erleichtern.

      Zusammenfassung

      Cron ist ein flexibles und leistungsfähiges Dienstprogramm, das die Belastung durch viele Aufgaben in Zusammenhang mit der Systemverwaltung verringern kann. In Kombination mit Shell-Skripts können Sie Aufgaben automatisieren, die normalerweise mühsam und kompliziert sind. Sie können beispielsweise ein Shell-Skript schreiben, um Daten-Backups zu einer Objekt-Speicherlösung zu senden, und es dann mit Cron automatisieren.



      Source link

      Como usar o Cron para automatizar tarefas no CentOS 8


      Shaun Lewis escreveu uma versão anterior deste tutorial.

      Introdução

      O Cron é um programa daemon de agendamento de trabalhos baseado em tempo, encontrado em sistemas operacionais do tipo Unix, incluindo as distribuições do Linux. O Cron executa em segundo plano e tarefas agendadas com o cron, conhecidas como “cron jobs” (trabalhos do cron), são executadas automaticamente, o que torna o cron útil para automatizar tarefas relacionadas à manutenção.

      Este guia fornece uma visão geral sobre como programar tarefas usando a sintaxe especial do cron. Ele também revisa alguns atalhos que você pode usar para tornar as agendas de trabalho mais fáceis de escrever e de entender.

      Pré-requisitos

      Para completar este guia, você precisará de acesso a um computador que executa em CentOS 8. Pode ser sua máquina local, uma máquina virtual ou um servidor virtual privado.

      Independentemente do tipo de computador que você usar para acompanhar este guia, ele deverá possuir um usuário não raiz com privilégios administrativos configurados. Para configurar isso, siga as instruções de nosso Guia de configuração inicial de servidor para o CentOS 8.

      Instalando o Cron

      Por padrão, quase toda distribuição do Linux tem alguma forma do cron instalada. No entanto, se estiver usando uma máquina com CentOS na qual o cron não estiver instalado, instale-o usando o comando dnf.

      Antes de instalar o cron em uma máquina CentOS, atualize o índice de pacotes local do computador:

      Então, instale o daemon cron com o seguinte comando:

      • sudo dnf install crontabs

      Esse comando solicitará que você confirme se deseja instalar o pacote crontabs e suas dependências. Faça isso pressionando y e, depois, ENTER.

      Isso instalará o cron em seu sistema, mas será necessário iniciar o daemon manualmente. Você também precisará garantir que ele esteja configurado para executar sempre que o servidor for iniciado. Você pode realizar ambas essas ações com o comando systemctl.

      Para iniciar o daemon cron, execute o seguinte comando:

      • sudo systemctl start crond.service

      Para definir o cron para executar sempre que o servidor for iniciado, digite:

      • sudo systemctl enable crond.service

      Depois disso, o cron estará instalado no seu sistema, pronto para que você comece a agendar trabalhos.

      Entendendo como o Cron funciona

      Os trabalhos do cron são registrados e gerenciados em um arquivo especial conhecido como crontab. Cada perfil de usuário no sistema pode ter seu próprio arquivo crontab – onde o usuário poderá agendar trabalhos – que fica armazenado em /var/spool/cron/.

      Para agendar um trabalho, simplesmente abra seu crontab para edição e adicione uma tarefa escrita na forma de uma expressão cron. A sintaxe para expressões cron pode ser dividida em dois elementos: o agendamento e o comando a executar.

      O comando pode ser praticamente qualquer comando que você executaria normalmente na linha de comando. O componente de agendamento da sintaxe é dividido em 5 campos diferentes, os quais vêm escritos na seguinte ordem:

      CampoValores permitidos
      minuto0-59
      hora0-23
      Dia do mês1-31
      mês1-12 ou JAN-DEC
      Dia da semana0-6 ou SUN-SAT

      Juntas, as tarefas agendadas em um arquivo crontab são estruturadas da seguinte forma:

      minute hour day_of_month month day_of_week command_to_run
      

      Apresentamos aqui um exemplo funcional de uma expressão cron. Essa expressão executa o comando curl http://www.google.com, toda terça-feira, às 5:30 PM:

      30 17 * * 2 curl http://www.google.com
      

      Também existem alguns caracteres especiais que você pode incluir no componente de agendamento de uma expressão cron para facilitar o agendamento:

      • *: em expressões cron, um asterisco é uma variável curinga que representa “todos”. Assim, uma tarefa agendada com * * * * * ... será executada a cada minuto, de cada hora, de cada dia, de cada mês.
      • ,: vírgulas separar os valores do agendamento para formar uma lista. Se quiser executar uma tarefa no início e na metade de cada hora, em vez de escrever duas tarefas separadas (por exemplo, 0 * * * * ... e 30 * * * * ...), poderia conseguir a mesma funcionalidade com um (0,30 * * * * ...).
      • -: um hífen representa um intervalo de valores no campo da agenda. Em vez de ter 30 tarefas agendadas separadamente em relação a um comando que você quer executar nos primeiros 30 minutos de cada hora (como em 0 * * * * ..., 1 * * * * ..., 2 * * * * ... e assim por diante), bastaria que você as agendasse como 0-29 * * * * ....
      • /: utilize uma barra com um asterisco para expressar um valor de etapa. Por exemplo, em vez de escrever oito tarefas cron separadas para executar um comando a cada três horas (como em: 0 0 * * * ..., 0 3 * * * ..., 0 6 * * * ... e assim por diante), você poderia agendá-las para executar da seguinte maneira: 0 */3 * * * ....

      Nota: você não pode expressar valores de etapa de modo arbitrário; você só pode usar números inteiros que se dividam de maneira uniforme no intervalo permitido pelo campo em questão. Por exemplo, no campo “horas”, você só poderia usar uma barra antes de 1, 2, 3, 4, 6, 8 ou 12.

      Apresentamos a seguir, outros exemplos de como usar o componente de agendamento do cron:

      • * * * * * – Executa o comando a cada minuto.
      • 12 * * * * – Executa o comando 12 minutos após cada hora.
      • 0,15,30,45 * * * * – Executa o comando a cada 15 minutos.
      • */15 * * * * – Executa o comando a cada 15 minutos.
      • 0 4 * * * – Executar o comando todo dia às 4:00 AM.
      • 0 4 * * 2-4 – Executar o comando toda terça-feira, quarta-feira e quinta-feira às 4:00 AM.
      • 20,40 */8 * 7-12 * – Executar o comando no vigésimo e quadragésimo minuto de cada oitava hora, todos os dias dos últimos 6 meses do ano.

      Se acha isso tudo um pouco confuso ou se quiser ajuda sobre como escrever os agendamentos de suas próprias tarefas cron, o Cronitor fornece um editor de expressão da agenda do cron bastante útil, chamado “Crontab Guru”, que você pode usar para verificar se seus agendamentos do cron são válidos.

      Gerenciando os crontabs

      Assim que tiver escolhido uma agenda e souber o trabalho que deseja executar, você precisará colocá-lo em um lugar onde seu daemon consiga lê-lo.

      Como mencionado anteriormente, um crontab é um arquivo especial que mantém a agenda de trabalhos que o cron executará. No entanto, esses agendamentos não foram planejados para edição direta. Em vez disso, é recomendável que você utilize o comando crontab. Isso permite que você edite o crontab do perfil do seu usuário sem alterar seus privilégios com o sudo. O comando crontab também revelará se há erros de sintaxe no crontab, ao passo que editá-lo diretamente não revelará.

      É possível editar seu crontab com o seguinte comando:

      Isso abrirá seu crontab no editor de texto padrão do seu perfil de usuário.

      Nota: em novos servidores CentOS 8, por padrão, o comando crontab -e abrirá o crontab do seu usuário com o vi. O vi é um editor de texto extremamente eficaz e flexível; porém, para os usuários que não têm experiência com ele, o vi pode parecer um pouco lento.

      Se quiser usar um editor de texto mais acessível como seu editor padrão do crontab, instale e configure o nano como tal.

      Para tanto, instale o nano com o dnf:

      Quando solicitado, pressione y e, depois, ENTER para confirmar que deseja instalar o nano.

      Para definir o nano como o seu editor visual padrão de perfil de usuário, abra o arquivo .bash_profile para edição. Agora que o instalou, você pod fazer o seguinte com o nano:

      No final do arquivo, adicione a seguinte linha:

      ~/.bash_profile

      . . .
      export VISUAL="nano"
      

      Isso define a variável de ambiente VISUAL para o nano. A VISUAL é uma variável de ambiente Unix que muitos programas — incluindo o crontab — invocam para editar um arquivo. Após adicionar essa linha, salve e feche o arquivo, pressionando CTRL + X, Y e, depois, ENTER.

      Em seguida, recarregue o .bash_profile para que o shell capte a nova mudança:

      Assim que estiver no editor, você pode preencher sua agenda com cada trabalho em uma nova linha. Caso contrário, você pode salvar e fechar o crontab por enquanto. Se você tiver aberto o seu crontab com o vi – o editor de texto padrão do CentOS 8, você pode salvar e fechar o crontab, pressionando ESC para garantir que esteja no modo de comando do vi. Em seguida, digite :x e pressione ENTER.

      Observe que,nos sistemas Linux, há outro crontab armazenado no diretório /etc/. Trata-se de um crontab que abrange o sistema todo e que tem um campo adicional para o perfil de usuário sob o qual cada trabalho do cron deve ser executado. Este tutorial se concentra em crontabs específicos do usuário. Porém, se você quisesse editar o crontab no âmbito do sistema, poderia fazer isso com o seguinte comando:

      Se quiser visualizar o conteúdo do seu crontab, sem editá-lo, você pode usar o seguinte comando:

      É possível apagar seu crontab com o seguinte comando:

      Aviso: o comando a seguir não irá pedir que você confirme se deseja apagar seu crontab. Apenas execute-o caso tenha certeza de que deseja apagá-lo.

      Esse comando excluirá o crontab do usuário imediatamente. No entanto, você pode incluir o sinalizador -i para fazer com que o comando peça para você confirmar se realmente deseja excluir o crontab do usuário:

      Output

      crontab: really delete sammy's crontab?

      Quando solicitado, você deve digitar y para excluir o crontab ou n para cancelar a exclusão.

      Gerenciando o resultado do trabalho do cron

      Como os trabalhos do cron são executados em segundo plano, nem sempre fica aparente se eles foram executados com sucesso. Agora que sabe como usar o comando crontab e como agendar um trabalho do cron, você pode começar a experimentar maneiras diferentes de redirecionar o resultado dos trabalhos do cron para ajudar você a monitorar se eles foram executados com sucesso.

      Se tiver um agente de transferência de mensagens — como o Sendmail — instalado e configurado corretamente no seu servidor, você pode enviar o resultado das tarefas do cron para o endereço de e-mail associado ao seu perfil de usuário do Linux. Também é possível especificar manualmente um endereço de e-mail, colocando uma definição MAILTO no topo do crontab.

      Por exemplo, você poderia adicionar as linhas a seguir a um crontab. Tais linhas incluem uma instrução MAILTO, seguida de um exemplo de endereço de e-mail, uma diretiva SHELL que indica o shell a executar (bash, neste exemplo), uma diretiva HOME apontando para o caminho no qual procurar o binário do cron e uma única tarefa do cron:

      . . .
      
      MAILTO="example@digitalocean.com"
      SHELL=/bin/bash
      HOME=/
      
      * * * * * echo ‘Run this command every minute’
      

      Esse trabalho em particular retornará “Run this command every minute” (Executar este comando a cada minuto) e tal resultado será enviado por e-mail a cada minuto para o endereço especificado após a diretiva MAILTO.

      Também é possível redirecionar o resultado de uma tarefa do cron para um arquivo de registro ou para um local vazio para evitar receber um e-mail com o resultado.

      Para anexar o resultado de um comando agendado a um arquivo de registro, adicione >> ao final do comando, seguido do nome e local de um arquivo de registro de sua escolha, como no exemplo abaixo:

      * * * * * echo ‘Run this command every minute’ >> /directory/path/file.log
      

      Vamos supor que você queira usar o cron para executar um script, mas mantê-lo em execução em segundo plano. Para fazer isso, poderia redirecionar o resultado do script para um local vazio, como /dev/null, o que excluirá prontamente quaisquer dados escritos nele. Por exemplo, o trabalho do cron a seguir executa um script PHP em segundo plano:

      * * * * * /usr/bin/php /var/www/domain.com/backup.php > /dev/null 2>&1
      

      Este trabalho do cron também redireciona o erro padrão — representado por 2 — para o resultado padrão (>&1). Como o resultado padrão já está sendo redirecionado para /dev/null, isso permite essencialmente que o script seja executado silenciosamente. Mesmo se o crontab possuir uma instrução MAILTO, o resultado do comando não será enviado para o endereço de e-mail especificado.

      Restringindo o acesso

      É possível gerenciar quais usuários têm permissão para usar o comando crontab com os arquivos cron.allow e cron.deny, sendo que ambos ficam armazenados no diretório /etc/. Se o arquivo cron.deny existir, qualquer usuário listado nele estará impedido de editar seu crontab. Se o cron.allow existir, apenas os usuários listados nele poderão editar seus crontabs. Se ambos os arquivos existirem e o mesmo usuário estiver listado em cada um deles, o arquivo cron.allow irá substituir o cron.deny e o usuário conseguirá editar seu crontab.

      Por exemplo, para negar acesso a todos os usuários e depois dar acesso ao usuário ishmael, você poderia usar a seguinte sequência de comandos:

      • sudo echo ALL >>/etc/cron.deny
      • sudo echo ishmael >>/etc/cron.allow

      Primeiro, bloqueamos todos os usuários, anexando ALL ao arquivo cron.deny. Em seguida, ao adicionar o nome de usuário ao arquivo cron.allow, damos acesso ao perfil do usuário ishmael para executar trabalhos do cron.

      Note que se um usuário tiver privilégios sudo, ele pode editar o crontab de outro usuário com o seguinte comando:

      No entanto, se o cron.deny existir e o usuário estiver listado nele, mas não estiver listado no cron.allow, você receberá o seguinte erro após executar o comando anterior:

      Output

      The user user cannot use this program (crontab)

      Por padrão, a maioria dos daemons cron presumirão que todos os usuários têm acesso ao cron, a menos que o cron.allow ou o cron.deny existirem.

      Sintaxe especial

      Também existem vários comandos abreviados que você pode usar no seu arquivo crontab para ajudar a simplificar o agendamento de trabalhos. São essencialmente atalhos para o equivalente numérico do agendamento especificado:

      AtalhoAbreviação para
      @hourly0 * * * *
      @daily0 0 * * *
      @weekly0 0 * * 0
      @monthly0 0 1 * *
      @yearly0 0 1 1 *

      Nota: nem todos os daemons cron podem analisar essa sintaxe (especialmente versões mais antigas); assim, verifique novamente se a sintaxe funciona antes de confiar nela.

      Além disso, a abreviação @reboot irá executar qualquer comando que venha depois dela, sempre que o servidor for iniciado:

      @reboot echo "System start up"
      

      Usar esses atalhos sempre que possível pode ajudar a facilitar a interpretação do agendamento de tarefas no seu crontab.

      Conclusão

      O Cron é um utilitário flexível e eficaz, que pode reduzir a carga de trabalho de muitas tarefas associadas à administração do sistema. Quando combinado com scripts de shell, é possível automatizar tarefas que normalmente são tediosas ou complicadas.



      Source link