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

Linux Crontab:15 fantastische Cron-Job-Beispiele

Ein erfahrener Linux-Systemadministrator weiß, wie wichtig es ist, routinemäßige Wartungsaufgaben automatisch im Hintergrund auszuführen.

Das Linux-Cron-Dienstprogramm ist eine effektive Möglichkeit, einen routinemäßigen Hintergrundjob zu einer bestimmten Zeit und/oder einem bestimmten Tag fortlaufend zu planen.

Dieser Artikel ist Teil der fortlaufenden Serie Produktivitätstipps für Geeks. Lassen Sie uns in diesem Artikel 15 fantastische Beispiele für die Crontab-Auftragsplanung betrachten.

Linux Crontab-Format

MIN HOUR DOM MON DOW CMD
Tabelle:Crontab-Felder und zulässige Bereiche (Linux Crontab-Syntax)
Feld Beschreibung Zulässiger Wert
MIN Minutenfeld 0 bis 59
STUNDE Stundenfeld 0 bis 23
DOM Tag des Monats 1-31
MON Monatsfeld 1-12
DOW Wochentag 0-6
CMD Befehl Jeder auszuführende Befehl.

1. Planen eines Jobs für eine bestimmte Zeit

Die grundlegende Verwendung von Cron besteht darin, einen Job zu einer bestimmten Zeit auszuführen, wie unten gezeigt. Dadurch wird das Full-Backup-Shell-Skript (Full-Backup) am 10. Juni 08:30 Uhr ausgeführt .

Bitte beachten Sie, dass das Zeitfeld das 24-Stunden-Format verwendet. Verwenden Sie also für 8 Uhr morgens 8 und für 20 Uhr 20.

30 08 10 06 * /home/ramesh/full-backup
  • 30 – 30. Minute
  • 08 – 08:00 Uhr
  • 10 – 10. Tag
  • 06 – 6. Monat (Juni)
  • * – Jeden Tag der Woche

2. Planen Sie einen Job für mehr als eine Instanz (z. B. zweimal am Tag)

Das folgende Skript erstellt zweimal täglich eine inkrementelle Sicherung.

Dieses Beispiel führt das angegebene inkrementelle Backup-Shell-Skript (incremental-backup) jeden Tag um 11:00 und 16:00 aus. Der durch Komma getrennte Wert in einem Feld gibt an, dass der Befehl in der gesamten angegebenen Zeit ausgeführt werden muss.

00 11,16 * * * /home/ramesh/bin/incremental-backup
  • 00 – 0. Minute (zur vollen Stunde)
  • 11,16 – 11 Uhr und 16 Uhr
  • * – Jeden Tag
  • * – Jeden Monat
  • * – Jeden Tag der Woche

3. Planen Sie einen Job für einen bestimmten Zeitraum (z. B. nur an Wochentagen)

Wenn Sie möchten, dass ein Job für jede Stunde innerhalb eines bestimmten Zeitraums geplant wird, verwenden Sie Folgendes.

Cron Job täglich während der Arbeitszeit

In diesem Beispiel wird der Status der Datenbank täglich (einschließlich Wochenenden) während der Arbeitszeit von 9:00 bis 18:00 Uhr überprüft.

00 09-18 * * * /home/ramesh/bin/check-db-status
  • 00 – 0. Minute (zur vollen Stunde)
  • 09-18 – 09:00, 10:00, 11:00, 00:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Jeden Tag
  • * – Jeden Monat
  • * – Jeden Tag der Woche

Cron Job jeden Wochentag während der Arbeitszeit

In diesem Beispiel wird der Status der Datenbank an jedem Wochentag (d. h. außer Sa und So) während der Arbeitszeit von 09:00 – 18:00 Uhr überprüft.

00 09-18 * * 1-5 /home/ramesh/bin/check-db-status
  • 00 – 0. Minute (zur vollen Stunde)
  • 09-18 – 09:00, 10:00, 11:00, 00:00, 13:00, 14:00, 15:00, 16:00, 17:00, 18:00
  • * – Jeden Tag
  • * – Jeden Monat
  • 1-5 -Mo, Di, Mi, Do und Fr (jeden Wochentag)

4. Wie werden Crontab-Einträge angezeigt?

Crontab-Einträge des aktuell angemeldeten Benutzers anzeigen

Um Ihre crontab-Einträge anzuzeigen, geben Sie crontab -l von Ihrem Unix-Konto ein, wie unten gezeigt.

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: This displays crontab of the current logged in user]

Root-Crontab-Einträge anzeigen

Melden Sie sich als Root-Benutzer an (su – root) und führen Sie crontab -l wie unten gezeigt aus.

root@dev-db# crontab -l
no crontab for root

Crontab HowTo:Crontabs-Einträge anderer Linux-Benutzer anzeigen

Um crontab-Einträge anderer Linux-Benutzer anzuzeigen, melden Sie sich als Root an und verwenden Sie -u {Benutzername} -l wie unten gezeigt.

root@dev-db# crontab -u sathiya -l
@monthly /home/sathiya/monthly-backup
00 09-18 * * * /home/sathiya/check-db-status

5. Wie bearbeite ich Crontab-Einträge?

Crontab-Einträge des aktuell angemeldeten Benutzers bearbeiten

Um einen Crontab-Eintrag zu bearbeiten, verwenden Sie crontab -e wie unten gezeigt. Standardmäßig wird die Crontab des aktuell angemeldeten Benutzers bearbeitet.

ramesh@dev-db$ crontab -e
@yearly /home/ramesh/centos/bin/annual-maintenance
*/10 * * * * /home/ramesh/debian/bin/check-disk-space
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

[Note: This will open the crontab file in Vim editor for editing.
Please note cron created a temporary /tmp/crontab.XX... ]

Wenn Sie die obige temporäre Datei mit :wq speichern, wird die Crontab gespeichert und die folgende Meldung angezeigt, dass die Crontab erfolgreich geändert wurde.

~
"crontab.XXXXyjWkHw" 2L, 83C written
crontab: installing new crontab

Stamm-Crontab-Einträge bearbeiten

Melden Sie sich als Root-Benutzer an (su – root) und führen Sie crontab -e wie unten gezeigt aus.

root@dev-db# crontab -e

Crontab-Dateieinträge anderer Linux-Benutzer bearbeiten

Um Crontab-Einträge anderer Linux-Benutzer zu bearbeiten, melden Sie sich als Root an und verwenden Sie -u {Benutzername} -e wie unten gezeigt.

root@dev-db# crontab -u sathiya -e
@monthly /home/sathiya/fedora/bin/monthly-backup
00 09-18 * * * /home/sathiya/ubuntu/bin/check-db-status
~
~
~
"/tmp/crontab.XXXXyjWkHw" 2L, 83C

6. Planen Sie einen Job für jede Minute mit Cron.

Im Idealfall müssen Sie nicht jede Minute einen Job planen. Aber das Verständnis dieses Beispiels wird Ihnen helfen, die anderen unten in diesem Artikel erwähnten Beispiele zu verstehen.

* * * * * CMD

Das * bedeutet alle möglichen Einheiten – d. h. jede Minute jeder Stunde während des ganzen Jahres. Neben der direkten Verwendung dieses * werden Sie es in den folgenden Fällen sehr nützlich finden.

  • Wenn Sie */5 im Minutenfeld angeben, bedeutet dies alle 5 Minuten.
  • Wenn Sie 0-10/2 im Minutenfeld angeben, bedeutet dies alle 2 Minuten in den ersten 10 Minuten.
  • Daher kann die obige Konvention für alle anderen 4 Felder verwendet werden.

7. Planen Sie alle 10 Minuten einen Cron-Job im Hintergrund.

Verwenden Sie Folgendes, wenn Sie den Speicherplatz alle 10 Minuten überprüfen möchten.

*/10 * * * * /home/ramesh/check-disk-space

Es führt das ganze Jahr über alle 10 Minuten den angegebenen Befehl check-disk-space aus. Möglicherweise müssen Sie den Befehl jedoch nur während der Bürozeiten ausführen oder umgekehrt. Die obigen Beispiele zeigen, wie man diese Dinge macht.

Anstatt Werte in den 5 Feldern anzugeben, können wir sie wie unten erwähnt mit einem einzigen Schlüsselwort angeben.

Es gibt Sonderfälle, in denen Sie anstelle der obigen 5 Felder @ gefolgt von einem Schlüsselwort verwenden können – wie z. B. Neustart, Mitternacht, jährlich, stündlich.

Tabelle:Cron-Spezialschlüsselwörter und ihre Bedeutung
Schlüsselwort Äquivalent
@yearly 0 0 1 1 *
@daily 0 0 * * *
@hourly 0 * * * *
@reboot Beim Start ausführen.

8. Planen Sie einen Job für die erste Minute jedes Jahres mit @yearly

Wenn Sie möchten, dass ein Job in der ersten Minute jedes Jahres ausgeführt wird, können Sie @yearly verwenden Cron-Schlüsselwort wie unten gezeigt.

Dadurch wird die jährliche Systemwartung mithilfe des Shell-Skripts für die jährliche Wartung um 00:00 Uhr am 1. Januar für jedes Jahr ausgeführt.

@yearly /home/ramesh/red-hat/bin/annual-maintenance

9. Planen Sie einen Cron-Job zu Beginn jedes Monats mit @monthly

Es ist so ähnlich wie das @yearly wie oben. Führt den Befehl aber einmal monatlich mit @monthly aus Cron-Schlüsselwort.

Dadurch wird das Shell-Skript Tape-Backup um 00:00 Uhr am 1. jedes Monats ausgeführt.

@monthly /home/ramesh/suse/bin/tape-backup

10. Planen Sie jeden Tag einen Hintergrundjob mit @daily

Mit @daily cron, führt dies täglich um 00:00 Uhr eine tägliche Protokolldateibereinigung mit cleanup-logs-Shell-Skript durch.

@daily /home/ramesh/arch-linux/bin/cleanup-logs "day started"

11. Wie führe ich einen Linux-Befehl nach jedem Neustart mit @reboot aus?

Mit @reboot cron-Schlüsselwort, dies führt den angegebenen Befehl einmal aus, nachdem die Maschine jedes Mal gebootet wurde.

@reboot CMD

12. Wie deaktiviere/leite ich die Crontab-E-Mail-Ausgabe mit dem Schlüsselwort MAIL um?

Standardmäßig sendet crontab die Jobausgabe an den Benutzer, der den Job geplant hat. Wenn Sie die Ausgabe an einen bestimmten Benutzer umleiten möchten, fügen Sie die MAIL-Variable in der Crontab hinzu oder aktualisieren Sie sie wie unten gezeigt.

ramesh@dev-db$ crontab -l
MAIL="ramesh"

@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

[Note: Crontab of the current logged in user with MAIL variable]


Wenn Sie möchten, dass die E-Mail nirgendwohin gesendet wird, d. h. die Crontab-Ausgabe per E-Mail zu stoppen, fügen oder aktualisieren Sie die MAIL-Variable in der Crontab wie unten gezeigt.

MAIL=""

13. So führen Sie jede Sekunde einen Linux-Cron-Job mit Crontab aus.

Sie können nicht jeden zweiten Cronjob planen. Weil in cron die kleinste Einheit, die Sie angeben können, Minute ist. In einem typischen Szenario gibt es für die meisten von uns keinen Grund, jede Sekunde einen Job im System auszuführen.

14. PATH-Variable im Crontab angeben

In allen obigen Beispielen haben wir den absoluten Pfad des Linux-Befehls oder des Shell-Skripts angegeben, das ausgeführt werden muss.

Wenn Sie beispielsweise statt /home/ramesh/tape-backup nur Tape-backup angeben möchten, fügen Sie den Pfad /home/ramesh zur PATH-Variablen in der crontab hinzu, wie unten gezeigt.

ramesh@dev-db$ crontab -l

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/home/ramesh

@yearly annual-maintenance
*/10 * * * * check-disk-space

[Note: Crontab of the current logged in user with PATH variable]

15. Crontab aus einer Cron-Datei installieren

Anstatt die Crontab-Datei direkt zu bearbeiten, können Sie auch alle Einträge zuerst in eine Cron-Datei einfügen. Sobald Sie alle diese Einträge in der Datei haben, können Sie sie wie unten gezeigt in den Cron hochladen oder installieren.

ramesh@dev-db$ crontab -l
no crontab for ramesh

$ cat cron-file.txt
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

ramesh@dev-db$ crontab cron-file.txt

ramesh@dev-db$ crontab -l
@yearly /home/ramesh/annual-maintenance
*/10 * * * * /home/ramesh/check-disk-space

Hinweis: Dadurch wird die cron-file.txt in Ihrer Crontab installiert, wodurch auch Ihre alten Cron-Einträge entfernt werden. Seien Sie also vorsichtig beim Hochladen von Cron-Einträgen aus einer cron-file.txt.

Zusätzliche Cron-Tutorials

  • Cron Vs Anacron:So richten Sie Anacron unter Linux ein (mit einem Beispiel)
  • Wie man Cron alle 5 Minuten, Sekunden, Stunden, Tage, Monate ausführt
  • 6 Beispiele für Linux-Crontab-Befehle
  • So installieren, bearbeiten oder entfernen Sie Cron-Jobs im Stapelmodus
  • At, atq, atrm, batch-Befehle anhand von 9 Beispielen verstehen

Tolle Linux-Artikel

Es folgen einige tolle 15 Beispiele Artikel, die Sie möglicherweise hilfreich finden.

  • Mama, ich habe es gefunden! — 15 praktische Beispiele für Linux-Suchbefehle
  • 15 Beispiele zur Beherrschung der Linux-Befehlszeilengeschichte
  • Unix LS-Befehl:15 praktische Beispiele
  • Bekomme den Grep in den Griff! – 15 praktische Grep-Befehlsbeispiele

Linux
  1. 4 Alternativen zu Cron unter Linux

  2. So verwenden Sie Cron unter Linux

  3. rm-Befehlsbeispiele unter Linux

  4. ps-Befehlsbeispiele in Linux

  5. Linux:Cronjob im Vordergrund ausführen

10 fantastische Awk-Befehlsbeispiele in Linux

Cron-Jobs und Crontab unter Linux erklärt

Crontab in Linux mit Beispielen verstehen

Was ist ein Cronjob unter Linux

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

id-Befehlsbeispiele in Linux