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

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

DANKE f√ľr deine Bewertung!

Fragen / Kommentare


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