Scheduling & Automatisierung

Erstellt: 2025-12-20 | Aktualisiert: 2025-12-31

Übersicht aller automatisierten Tasks: Cron-Jobs und Systemd Timer.

Cron-Jobs (/etc/cron.d/)4 (backup, certbot, e2scrub_all, php)
Systemd Timer14 aktiv
Logs/var/log/backup.log, journalctl

Cron-Jobs (/etc/cron.d/)

Backup

Datei/etc/cron.d/backup
ZeitTäglich 03:00
Userroot
Script/var/www/scripts/backup.sh
Log/var/log/backup.log

Cron-Eintrag

0 3 * * * root /var/www/scripts/backup.sh >> /var/log/backup.log 2>&1

Was wird gesichert

Retention

Backups älter als 7 Tage werden automatisch gelöscht.

Log prüfen

tail -50 /var/log/backup.log

Mehr Details: Backup-Dokumentation

SSL-Zertifikate (Certbot)

Datei/etc/cron.d/certbot
ZeitAlle 12 Stunden (mit Random-Sleep)
Userroot
HinweisWird von Systemd Timer überschrieben (certbot.timer)

Aktiver Timer

# Status prüfen
systemctl status certbot.timer

# Nächste Ausführung
systemctl list-timers certbot.timer

PHP Session Cleanup

Datei/etc/cron.d/php
ZeitAlle 30 Minuten (:09, :39)
Userroot
Script/usr/lib/php/sessionclean
HinweisWird von Systemd Timer überschrieben (phpsessionclean.timer)

e2scrub_all

Datei/etc/cron.d/e2scrub_all
ZweckExt4 Filesystem Scrubbing
HinweisWird von Systemd Timer überschrieben

Systemd Timer

Übersicht aller Timer

systemctl list-timers --all

Wichtige Timer

TimerServiceIntervallBeschreibung
certbot.timercertbot.service2x täglichSSL-Zertifikat Renewal
phpsessionclean.timerphpsessionclean.service30 minPHP Session Cleanup
apt-daily.timerapt-daily.service1x täglichAPT Package Listen Update
apt-daily-upgrade.timerapt-daily-upgrade.service1x täglichAutomatische Security Updates
logrotate.timerlogrotate.service1x täglichLog-Rotation
fstrim.timerfstrim.service1x wöchentlichSSD TRIM
man-db.timerman-db.service1x täglichMan-Page Index Update
e2scrub_all.timere2scrub_all.service1x wöchentlichExt4 Filesystem Check

Timer-Befehle

# Alle Timer anzeigen
systemctl list-timers --all

# Bestimmten Timer prüfen
systemctl status certbot.timer

# Timer manuell triggern
systemctl start certbot.service

# Timer Logs anzeigen
journalctl -u certbot.service --since today

Scheduling-Zeitplan

Täglicher Ablauf

00:00  dpkg-db-backup (Systemd)
03:00  Backup Script (/var/www/scripts/backup.sh)
05:00  apt-daily (Systemd)
06:00  apt-daily-upgrade (Systemd)
06:25  cron.daily (apache2, apt, dpkg, logrotate)
--:09  PHP Session Cleanup (alle 30 min, Systemd)
--:39  PHP Session Cleanup (alle 30 min, Systemd)
*/12h  Certbot Renewal Check (Systemd)

Wöchentlicher Ablauf

Montag   fstrim (SSD TRIM)
Sonntag  cron.weekly (man-db)
Sonntag  e2scrub_all (Filesystem Check)

Eigene Cron-Jobs erstellen

Methode 1: Datei in /etc/cron.d/

# /etc/cron.d/mein-job
# Format: Minute Stunde Tag Monat Wochentag User Befehl
30 4 * * * root /var/www/scripts/mein-script.sh >> /var/log/mein-job.log 2>&1

Methode 2: Crontab bearbeiten

crontab -e

Cron-Syntax

# ┌───────────── Minute (0-59)
# │ ┌───────────── Stunde (0-23)
# │ │ ┌───────────── Tag des Monats (1-31)
# │ │ │ ┌───────────── Monat (1-12)
# │ │ │ │ ┌───────────── Wochentag (0-7, 0 und 7 = Sonntag)
# │ │ │ │ │
# * * * * * Befehl

# Beispiele:
0 3 * * *     # Täglich um 03:00
*/15 * * * *  # Alle 15 Minuten
0 */2 * * *   # Alle 2 Stunden
0 9 * * 1-5   # Werktags um 09:00
0 0 1 * *     # Am 1. jeden Monats um Mitternacht

Troubleshooting

Cron-Job läuft nicht

# Cron-Daemon Status
systemctl status cron

# Cron Logs prüfen
grep CRON /var/log/syslog | tail -20

# Syntax prüfen
crontab -l

Systemd Timer läuft nicht

# Timer Status
systemctl status timer-name.timer

# Service Logs
journalctl -u service-name.service --since today

# Timer manuell starten
systemctl start service-name.service