GNU/Linux >> LINUX-Kenntnisse >  >> Linux

10 nützliche Cron-Beispiele zum Planen von Jobs unter Linux

Das GNU/Linux-System unterstützt mehrere Dienstprogramme zum Planen von Aufgaben. Das Cron-Dienstprogramm wird am häufigsten unterstützt. Es ermöglicht Ihnen, Aufgaben so zu planen, dass sie in regelmäßigen Abständen im Hintergrund ausgeführt werden. Das Cron-Dienstprogramm verwendet eine Tabelle (crontab) mit einer Liste von auszuführenden Skripten oder Befehlen und der Zeit, wann sie ausgeführt werden sollen.

Jobs planen

Normale Benutzer können den Befehl crontab verwenden, um ihre Jobs zu verwalten. Dieser Befehl kann auf vier verschiedene Arten aufgerufen werden:

Befehl Funktion
crontab -l Listen Sie die Jobs für den aktuellen Benutzer auf
crontab -r Entfernen Sie alle Jobs für die aktuellen Benutzer.
crontab -e Jobs für den aktuellen Benutzer bearbeiten.
crontab [Dateiname] Entfernen Sie alle Jobs und ersetzen Sie sie durch die Jobs, die aus [Dateiname] gelesen wurden. Wenn keine Datei angegeben ist, wird stdin verwendet.

Crontab bearbeiten und anzeigen

Beim Bearbeiten von Jobs mit dem „crontab -e “, wird ein Editor gestartet (standardmäßig vi. es sei denn, die Umgebungsvariable EDITOR wurde auf etwas anderes gesetzt). Die bearbeitete Datei enthält einen Job pro Zeile. Leerzeilen sind erlaubt und Kommentare beginnen ihre Zeile mit einem Raute-Symbol (#).

# crontab -e

Wenn Sie den Befehl „crontab -e“ ohne Optionen ausführen, wird standardmäßig die Crontab des aktuell angemeldeten Benutzers bearbeitet. Um die Crontab eines anderen Benutzers zu bearbeiten, können Sie die Option -u mit dem Befehl crontab verwenden. Zum Beispiel, um die Crontab des Benutzers john.

zu bearbeiten
# crontab -u john -e

Um die Crontab des aktuellen Benutzers anzuzeigen, verwenden Sie auf ähnliche Weise „crontab -l ”-Befehl.

# crontab -l

Und um die Crontab eines bestimmten Benutzers aufzulisten, verwenden Sie den folgenden Befehl.

# crontab -u john -l

Cron-Konfigurationsdateien

Der Cron-Hintergrundprozess ist größtenteils im Leerlauf. Es wacht einmal pro Minute auf und überprüft /etc/crontab, /etc/cron.d und die Cron-Tabellendateien des Benutzers und bestimmt, ob es irgendwelche Jobs gibt, die ausgeführt werden müssen.

Die folgende Tabelle fasst den Zweck der verschiedenen Dateien und Verzeichnisse zusammen, die von cron verwendet werden. Die Kenntnis dieser Dateien und Verzeichnisse wird Ihnen helfen, Probleme zu beheben und Cron besser zu verstehen.

Datei Zweck
/etc/init.d/crond Startet den Cron-Daemon beim Systemstart.
/var/log/cron Systemmeldungen im Zusammenhang mit dem Cron-Prozess. Nützlich für die Fehlerbehebung.
/var/spool/cron/[Benutzername] Benutzer-crontab-Dateien werden im Verzeichnis /var/spool/cron gespeichert.
/etc/cron.allow Gibt Benutzer an, die eine Cron-Tabelle erstellen können.
/etc/cron.deny Gibt Benutzer an, die keine Cron-Tabelle erstellen dürfen.
/etc/crontab Die Cron-Tabelle des Systems mit Befehlen zum Ausführen von Skripts in den folgenden Verzeichnissen: /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly und /etc/cron.monthly.
/etc/cron.d Ein Verzeichnis, das Cron-Tabellen für Jobs enthält, die nach einem anderen Zeitplan als stündlich, täglich, wöchentlich oder monatlich ausgeführt werden müssen.
/etc/cron.hourly Verzeichnis, das Systemskripte enthält, die stündlich ausgeführt werden.
/etc/cron.daily Verzeichnis, das Systemskripte enthält, die täglich ausgeführt werden.
/etc/cron.weekly Verzeichnis, das Systemskripte enthält, die wöchentlich ausgeführt werden.
/etc/cron.monthly Verzeichnis, das Systemskripte enthält, die monatlich ausgeführt werden.

Crontab-Syntax

Die Jobs der einzelnen Benutzer werden im Verzeichnis /var/spool/cron gespeichert in Dateien, die den Benutzernamen entsprechen. Diese Dateien gehören immer dem Benutzer root. Die Dateien in /var/spool/cron werden nicht direkt bearbeitet. Stattdessen wird ein Programm namens crontab verwendet, um sie zu manipulieren. Die folgende Abbildung zeigt die Syntax eines Cronjobs.

Jede Zeile in einer Datei definiert einen Job. Es gibt 6 Felder in einer Zeile. Die ersten 5 Felder definieren die Zeit, das letzte Feld enthält den auszuführenden Befehl. Dies kann jede Art von Befehl oder Shell-Skript sein. Die ersten 5 Felder haben folgendes Format:

Feld Bereich
Minuten 0-59
Stunden 0-23
Tag des Monats 1-31
Monat 0-12
Wochentag 0-7

Beispiel-Cronjobs

1. Planen Sie jedes Jahr am 2. Februar einen Job

Sie müssen einmal im Jahr an einem bestimmten Datum im Februar ein Backup-Skript ausführen. Die Syntax ist unten gezeigt.

0 9 2 2 *   /usr/local/bin/yearly_backup

2. Planen Sie jeden Tag jede Stunde in der fünften Minute einen Job

Verwenden Sie den folgenden Befehl, um jeden Tag jede Stunde zur fünften Minute ein Skript auszuführen:

5 * * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

3. Planen Sie jeden Tag 5 Minuten nach Mitternacht einen Job

Verwenden Sie den folgenden Befehl, um jeden Tag 5 Minuten nach Mitternacht auszuführen:

5 0 * * *      $HOME/bin/daily.job >> $HOME/tmp/out  2>&1

4. Planen Sie einen Auftrag zu einem bestimmten Zeitpunkt am Ersten jedes Monats

Verwenden Sie den folgenden Befehl, um um 14:15 Uhr auszuführen. am Ersten eines jeden Monats:

15 14 1 * * *     $HOME/bin/monthly

5. Planen Sie einen Job nur an Wochentagen zu einer bestimmten Zeit (außer Samstag und Sonntag)

Verwenden Sie den folgenden Befehl, um um 22:00 Uhr auszuführen. an Wochentagen:

0 22 * * 1-5  $HOME/bin/weekday.job >> $HOME/tmp/out  2>&1

6. Mehrere Jobs in einem einzigen Cron-Job planen

Wir können auch mehrere Jobs in einem einzigen Cron-Job mit einem Semikolon (;) getrennten Jobs planen, wie unten gezeigt:

0 12 * * * /var/tmp/script01.sh; /var/tmp/script02.sh

7. Verwenden von Bereichen zum Festlegen von Startzeiten

Bereiche können durch die Verwendung eines Bindestrichs angegeben werden. Ein Wert von 1-5 gibt an, dass dieses Feld für die Zahlen 1 bis 5 gültig ist. Wenn Sie anstelle einer Zahl einen Namen verwenden, können Sie keinen Bereich angeben. Ein Beispiel für die Angabe von Bereichen ist unten dargestellt. Der Job soll stündlich ab 15:00 Uhr ausgeführt werden. Bis 22 Uhr

* 3-10 * * * /var/tmp/script.sh

8. Verwenden von Schrittwerten zum Festlegen von Startzeiten

Schrittwerte können in Verbindung mit Bereichen verwendet werden. Um einen Schrittwert anzugeben, folgen Sie dem Bereich mit einem Schrägstrich (/) und einer Zahl. Die angegebene Zahl ist der Schrittwert. Folgendes gibt beispielsweise an, dass jeder dritte Wert (in diesem Fall 2, 5, 8 und 11) abgeglichen werden soll:

* 0-12/3 * * *  /var/tmp/script.sh

Schrittwerte können auch mit Sternchen verwendet werden. Der Wert */3 im Stundenfeld würde jede dritte Stunde entsprechen (0, 3, 6, 9, 12, 15, 18 und 21).

9. Verwenden von Listen zum Festlegen von Startzeiten

Listen sind ebenfalls akzeptabel; jedes Element in einer Liste wird durch ein Komma getrennt. Es ist üblich, Listen in Verbindung mit Bereichen zu verwenden, etwa so:

1-15,31-45 * * * *  /var/tmp/script.sh

Dieses Beispiel entspricht allen Zahlen (in unserem Fall Minuten) von 1 bis 15 und von 31 bis 45. Wenn Sie anstelle einer Zahl einen Namen verwenden, können Sie keine Liste angeben.

10. Planen Sie einen Auftrag am 1., 10. und 22. eines jeden Monats um 4:45 Uhr

Unten sehen Sie ein Beispiel für die Ausführung eines Jobs zu einer bestimmten Uhrzeit an einigen bestimmten Tagen im Monat.

45 4 1,10,22 * * /apps/bin/backup.sh 

Crontab-Makros

Wir können Makros in der Crontab-Datei hinzufügen. Verwenden Sie beispielsweise Folgendes, um „my_script“ nach jedem Neustart neu zu starten:

@reboot  /var/tmp/my_script

Das Folgende ist eine Zusammenfassung einiger weiterer Makros:

Eintrag Beschreibung Äquivalent zu
@reboot Einmal beim Start ausführen Keine
@weekly Einmal pro Woche ausführen 0 0 * * 0
@daily Einmal täglich ausführen 0 0 * * *
@mitternacht (wie @daily) 0 0 * * *
@hourly Einmal pro Stunde ausführen 0 * * * *

Umgang mit Ausgabe

Ein Skript gibt häufig etwas auf dem Bildschirm aus, entweder zum Debuggen, für Statusaktualisierungen oder um einen Fehler zu protokollieren. Alles, was ein Job auf dem Bildschirm ausgibt, wird in einer E-Mail an den aktuellen Benutzer gesendet, was mit der MAILTO-Variablen in der Crontab überschrieben werden kann.

# crontab -l
MAIL=john
0 2 * * * /apps/bin/backup.sh
So planen Sie Jobs mit Cron unter Linux
Definieren von Systemjobs mit Cron unter Linux
UNIX / Linux :Wie crontab den Zugriff basierend auf den Dateien cron.allow und cron.deny validiert
CentOS / RHEL :Anacron-Grundlagen (Was ist Anacron und wie wird es konfiguriert)
CentOS / RHEL :Anfängerleitfaden für Cron


Linux
  1. So verwenden Sie Cron unter Linux

  2. 12 nützliche Wget-Befehlsbeispiele unter Linux

  3. ls-Befehl unter Linux:17 nützliche Beispiele erklärt

  4. So planen Sie Cron-Jobs mit Crontab

  5. 6 Beispiele für Linux-Crontab-Befehle

Cron-Jobs und Crontab unter Linux erklärt

Crontab in Linux mit Beispielen verstehen

Linux-crontab-Befehl zum Erstellen und Verwalten von Cron-Jobs

12 Nützliche Beispiele für Linux-Datumsbefehle

Linux Crontab:15 fantastische Cron-Job-Beispiele

So planen Sie Jobs mit Cron in Linux