(1)
Artikel
bewerten
(67% positiv)
(2)

Linux CronJobs - geplante Tasks

Inhalt dieses Artikels:

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

    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)

    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)

    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)

    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)

     

    Artikel im Bereich Linux CronJobs - geplante Tasks


    crontab Reboot
    Mittels Crontab den Rechner regelmäßig neustarten

    Reboot um 3Uhr früh, täglich:

    crontab Reboot



    Feedback: