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 Timer | 14 aktiv |
| Logs | /var/log/backup.log, journalctl |
Cron-Jobs (/etc/cron.d/)
Backup
| Datei | /etc/cron.d/backup |
| Zeit | Täglich 03:00 |
| User | root |
| 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
- etc.tar.gz - System-Konfigurationen (/etc)
- www.tar.gz - Web-Dateien (/var/www)
- mariadb_all.sql.gz - Alle Datenbanken
- qdrant.tar.gz - Vektor-Storage
- ollama.tar.gz - LLM Modelle
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 |
| Zeit | Alle 12 Stunden (mit Random-Sleep) |
| User | root |
| Hinweis | Wird 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 |
| Zeit | Alle 30 Minuten (:09, :39) |
| User | root |
| Script | /usr/lib/php/sessionclean |
| Hinweis | Wird von Systemd Timer überschrieben (phpsessionclean.timer) |
e2scrub_all
| Datei | /etc/cron.d/e2scrub_all |
| Zweck | Ext4 Filesystem Scrubbing |
| Hinweis | Wird von Systemd Timer überschrieben |
Systemd Timer
Übersicht aller Timer
systemctl list-timers --all
Wichtige Timer
| Timer | Service | Intervall | Beschreibung |
| certbot.timer | certbot.service | 2x täglich | SSL-Zertifikat Renewal |
| phpsessionclean.timer | phpsessionclean.service | 30 min | PHP Session Cleanup |
| apt-daily.timer | apt-daily.service | 1x täglich | APT Package Listen Update |
| apt-daily-upgrade.timer | apt-daily-upgrade.service | 1x täglich | Automatische Security Updates |
| logrotate.timer | logrotate.service | 1x täglich | Log-Rotation |
| fstrim.timer | fstrim.service | 1x wöchentlich | SSD TRIM |
| man-db.timer | man-db.service | 1x täglich | Man-Page Index Update |
| e2scrub_all.timer | e2scrub_all.service | 1x wöchentlich | Ext4 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