Einen wiederkehrenden Job mit crontab -e erstellen
In diesem Schritt lernen Sie, wie Sie eine wiederkehrende Aufgabe mit cron
planen. Im Gegensatz zu at
, das einen Job einmal ausführt, ist cron
dafür konzipiert, Jobs wiederholt nach einem Zeitplan auszuführen. Sie verwalten Ihre geplanten Jobs in einer speziellen Datei namens crontab
.
Um die crontab
-Datei Ihres Benutzers zu bearbeiten, verwenden Sie den Befehl crontab -e
. Das -e
steht für "edit" (bearbeiten).
Öffnen wir die crontab
-Datei zur Bearbeitung.
crontab -e
Wenn Sie crontab -e
zum ersten Mal ausführen, werden Sie möglicherweise aufgefordert, einen Standardtexteditor auszuwählen. Wir empfehlen nano
, da er einfach zu bedienen ist.
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
...
Choose 1-2 [1]:
Drücken Sie 1
und dann Enter
, um nano
auszuwählen. Die crontab
-Datei wird geöffnet. Sie wird größtenteils leer sein, abgesehen von einigen Kommentaren, die erklären, wie sie zu verwenden ist.
Ein crontab
-Eintrag hat ein bestimmtes Format mit sechs Feldern:
Minute Stunde Tag-des-Monats Monat Wochentag Befehl
Ein Sternchen (*
) in einem Zeitfeld fungiert als Platzhalter und bedeutet "jeder". Für unsere Aufgabe möchten wir einen Befehl jede Minute ausführen. Dies ist perfekt zum Testen, da wir nicht lange warten müssen, um das Ergebnis zu sehen. Der Zeitplan für "jede Minute" lautet * * * * *
.
Fügen Sie nun am Ende der Datei eine neue Zeile hinzu, um einen Job zu planen, der das aktuelle Datum und die aktuelle Uhrzeit an eine Protokolldatei namens cron_log.txt
in Ihrem Projektverzeichnis anhängt.
* * * * * date >> ~/project/cron_log.txt
Nachdem Sie die Zeile hinzugefügt haben, sollte Ihr Editor etwa so aussehen:
## 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
* * * * * date >> ~/project/cron_log.txt
Um die Datei zu speichern und nano
zu beenden, drücken Sie Strg-X
, dann Y
zur Bestätigung der Änderungen und schließlich Enter
, um in die Datei zu schreiben.
Sobald Sie beenden, sehen Sie eine Bestätigungsmeldung in Ihrem Terminal:
crontab: installing new crontab
Das bedeutet, dass Ihr neuer Cron-Job aktiv ist. Der cron
-Daemon wird diese Datei nun jede Minute überprüfen und Ihren Befehl ausführen.
Warten Sie mindestens eine Minute. Überprüfen Sie dann, ob die Protokolldatei erstellt wurde.
ls -l ~/project/cron_log.txt
Sie sollten die Datei aufgelistet sehen.
-rw-r--r-- 1 labex labex 29 Jan 1 12:15 /home/labex/project/cron_log.txt
Zeigen Sie nun deren Inhalt an.
cat ~/project/cron_log.txt
Die Ausgabe zeigt das Datum und die Uhrzeit an, zu der der Befehl zum ersten Mal ausgeführt wurde.
Mon Jan 1 12:15:01 UTC 2024
Wenn Sie noch eine Minute warten und den cat
-Befehl erneut ausführen, sehen Sie eine neue Zeile mit einem aktualisierten Zeitstempel, was zeigt, dass der Job wiederholt ausgeführt wird.