Linux CronJobs - geplante Tasks : Debian crontab

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:

0 3 * * * /sbin/shutdown -r now

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

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!


veröffentlicht am 07.01.2019 von Bernhard
geändert am 19.11.2020 von Bernhard



Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Mehr Details