Linux CronJobs - geplante Tasks | Debian crontab [erklärt]
geplante Tasks können in Linux mittels crontab gestartet werden.
Für das Einrichten der Tasks wird der Befehl crontab -e im Terminal verwendet.
Format der crontab-Einträge
m h dom mon dow command
* * * * * command
m h dom mon dow Befehl
| | | | |
| | | | ----- Wochentag (0 - 7) (Sonntag ist 0 und 7; 1: Montag; 2: Dienstag; .)
| | | |
| | | ------- Monat (1 - 12)
| | |
| | --------- Tag (1 - 31)
| |
| ----------- Stunde (0 - 23)
|
------------- Minute (0 - 59)
m
... Minute
h
... Stunde
mon
... Monat
dow
... Tag der Woche
command
... Shell Command
Ein * bedeutet zu jeder Einheit:
* * * * * jede Minute
1 2 * * * Stunde 2, Minute 1: also 2:01 Uhr nachts
1 2 3 * * Stunde 2, Minute 1: Tag: 3 also immer am 3ten des Monats 2:01 Uhr nachts.
1 2 * * * 3 jeden Mittwoch um 2:01 Uhr nachts
*/10 * * * * alle 10 Minuten
starten als root
crontab kann als aktueller Benutzer oder als root konfiguriert werden:
sudo crontab -e
Je nachdem welcher Editor installiert ist, wird an dieser Stelle meist der vi-Editor oder nano verwendet. Gerade für Beginner ist die Bedienung von vi etwas gewöhnungsbedürftig.
Beispiele
Ausführen beim Starten des PC
Hier als Beispiel zusätzliche Einträge in den iptables um einen Netzbereich zu blockieren:
@reboot sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.253 -j DROP
@reboot führt den Befehl immer beim Starten des PCs aus.
Linux Version: uname -a:
Linux soxn 4.17.0-0.bpo.1-amd64 #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23) x86_64 GNU/Linux
Starten eines Bash-Scripts
Wiederholtes Starten eines Scripts: hier jede Minute:
* * * * * . /var/bashscript.sh > /dev/null 2>&1
(getestete Linux Version: uname -a
Linux raspberrypi 4.14.76-v7+ #1150 SMP Mon Oct 15 15:19:23 BST 2018 armv7l GNU/Linux)
einen Dienst neustarten
5 19 * * * sudo service hostapd restart
(getestete Linux Version: uname -a
Linux raspberrypi 4.14.76-v7+ #1150 SMP Mon Oct 15 15:19:23 BST 2018 armv7l GNU/Linux)
den Server neustarten: Reboot
als Beispiel Reboot um 3Uhr früh, täglich:
<span class="hljs-number">0</span> <span class="hljs-number">3</span> * * * <span class="hljs-regexp">/sbin/</span>shutdown -r now<br />
alternativ:
1 5 * * * sudo reboot
(getestete Linux Version: uname -a
Linux raspberrypi 4.14.76-v7+ #1150 SMP Mon Oct 15 15:19:23 BST 2018 armv7l GNU/Linux)
Details zum Reboot / Shutdown-Befehl, siehe: Linux-Neustart
alle 10 Minuten
*/10 * * * * . /nextcloud/check.sh > /dev/null 2>&1
(getestete Linux Version: uname -a:
Linux soxn 4.17.0-0.bpo.1-amd64 #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23) x86_64 GNU/Linux)
als anderer Benutzer
crontab -e
0 2 * * * username /var/script.sh
sudo crontab -e
0 2 * * * su username -c "/var/script.sh"
Starten eines Docker-Befehles
Das Host-Betriebssystem kann mittels crontab Jobs im Container triggern:
0 3 * * * docker exec db mysqldump --user=root --password=password -h localhost nextcloud > /nextcloud/nextcloud/db/dump.sql
Hier als Beispiel: jeden Tag um 3h Früh
(getestete Linux Version: uname -a:
Linux soxn 4.17.0-0.bpo.1-amd64 #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23) x86_64 GNU/Linux)
mehrere Befehle in einer Zeile
Mehrere Befehle in einer Zeile können einfach mit einem Strichpunkt: ; getrennt werden
if then in cron
Von Sonntag bis Freitag 3:01 Uhr, sollte der Befehl btrfs device stats /daten einen Fehler beinhalten diesen per Mail verschicken, löschen und mittels scrub beheben:
1 3 * * 0,1,2,3,4,5 if [ "$(btrfs device stats /daten | grep -vE ' 0$')" != "" ];then btrfs device stats -z /daten | mail -s "Error: BTRFS Device Status" Mail@meineMail.Adresse;btrfs scrub start /daten;fi
(getestete Linux Version: uname -a:
Linux soxn 4.17.0-0.bpo.1-amd64 #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23) x86_64 GNU/Linux)
Suche nach einem Text in einer Ausgabe und Ausführen eines Befehls, falls dieser vorkommt
* * * * * iw dev wlan1 info | grep -q 'managed' && sudo service hostapd restart
(getestete Version: uname -a:
Linux raspberrypi 4.14.76-v7+ #1150 SMP Mon Oct 15 15:19:23 BST 2018 armv7l GNU/Linux)
Details zu "grep", siehe: Linux Text in Dateien suchen: grep
BTRFS Überprüfung und Datenpflege
Den Festplattenstatus per Mail verschicken, wöchentlich Sonntag 22:01Uhr:
1 22 * * 0 btrfs device stats -z /daten | mail -s "BTRFS Device Status" Mail@meineMail.Adresse
Scrub starten wöchentlich, Sonntag um 22:03 Uhr:
3 22 * * 0 btrfs scrub start /daten
erneut den Status per Mail verschicken: 6:15 Montag Früh:
15 6 * * 1 btrfs scrub status /daten | mail -s "BTRFS Scrub Status" Mail@meineMail.Adresse
Montag Früh: 6:16 Uhr: den Errorzähler auf 0 setzten:
16 6 * * 1 btrfs device stats -z /daten | mail -s "BTRFS Device Status" Mail@meineMail.Adresse
(getestete Linux Version: uname -a:
Linux soxn 4.17.0-0.bpo.1-amd64 #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23) x86_64 GNU/Linux)
Details zu BTRFS, siehe: BTRFS Dateisystem Befehle Beginner - Überblick
{{percentage}} % positiv