Linux Cronjob
- sudo systemctl status cron.service - läuft Cron Service?
- crontab -e - Crontab des angemeldeten Users (whoami)
- /etc/crontab bzw. /etc/cron.d/ - System-Crontab
- Syntax: Minute (0-59) Stunde (0-23) Tag (1-31) Monat (1-12) Wochentag (1-7) Befehl
- Job täglich 10 Uhr: "0 10 * * * Befehl"
- Job täglich 8 + 16 Uhr (Komma): "0 8,16 * * * Befehl"
- Job alle 10 Minuten (*/): "*/10 * * * * Befehl"
- Job nach Reboot: "@reboot /usr/bin/test-script.sh" (startet nach Systemstart, auch ohne Useranmeldung)
Cron-Jobs werden per Default per Mail an den ausführenden User gemeldet. - Cronjob nicht protokollieren: "0 10 * * * Befehl > /dev/null"
- Cronjob in Logfile protokollieren: "0 10 * * * Befehl >> /var/log/backup.log"
- Normale Ausgabe und Fehler sollen protokolliert werden (2>&1): "0 10 * * * Befehl >> /var/log/backup.log 2>&1"
- Sonderregel: Verzeichnisse für Intervalle ohne Angabe für Zeit (abweichender Syntax)
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.monthly/
/etc/cron.weekly/
Beispiele:
- Datum-Zeile im LOG:
0 22 * * * echo ---------- Date: $(date +"\%Y\%m\%d - \%H:\%M") ---- >> /var/log/autoupdates.log 2>>&1 - Monatlich LOG löschen + Datum-Zeile:
0 22 1 * * echo ---------- Date: $(date +"\%Y\%m\%d - \%H:\%M") ---- > /var/log/autoupdates.log 2>&1 - täglich REBOOT (crontab -e als root!):
0 4 * * * /sbin/shutdown -r +3 - wöchentlich UPDATE + LOG:
5 22 * * 3 /usr/bin/apt update -q -y >> /var/log/autoupdates.log 2>&1
10 22 * * 3 /usr/bin/apt upgrade -q -y >> /var/log/autoupdates.log 2>&1