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
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.
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