VServer und Root Server - Cronjobs und systemd-Timer
Wiederkehrende Aufgaben können mit Cron oder systemd-Timern ausgeführt werden. Verwenden Sie absolute Pfade, protokollieren Sie Fehler und verhindern Sie unerwünschte parallele Läufe.
Inhaltsverzeichnis
Persönlichen Cronjob anlegen
crontab -e
Eine Cronzeile besteht aus Minute, Stunde, Tag des Monats, Monat, Wochentag und Befehl:
15 2 * * * /usr/local/bin/mein-backup >> /var/log/mein-backup.log 2>&1
Das Beispiel startet täglich um 02:15 Uhr. Der ausführende Benutzer benötigt Schreibrechte auf die Logdatei; für Benutzerjobs ist ein Pfad im eigenen Home-Verzeichnis oft geeigneter.
Aktuelle Einträge anzeigen:
crontab -l sudo crontab -u benutzername -l
Überlappende Läufe verhindern
Wenn ein Lauf nicht erneut starten darf, solange der vorherige noch läuft:
15 2 * * * /usr/bin/flock -n /run/lock/mein-job.lock /usr/local/bin/mein-backup
Der Benutzer muss die Lockdatei anlegen dürfen. Für normale Benutzer eignet sich ein eigenes beschreibbares Laufzeitverzeichnis.
Cron-Umgebung beachten
Cron verwendet eine reduzierte Umgebung. Nutzen Sie absolute Programmpfade, setzen Sie benötigte Variablen ausdrücklich und verlassen Sie sich nicht auf das Arbeitsverzeichnis einer interaktiven Shell. Zugangsdaten gehören nicht direkt in die Cronzeile oder Prozessargumente.
Fehler prüfen
Je nach Distribution erscheinen Meldungen im Journal oder in klassischen Logdateien:
sudo journalctl -u cron --since today sudo journalctl -u crond --since today
Nur einer der beiden Unit-Namen ist auf einem System üblich.
systemd-Timer
Systemd-Timer bieten getrennte Service- und Timer-Units, Journal-Protokollierung und Abhängigkeiten. Vorhandene Timer anzeigen:
systemctl list-timers --all
Für komplexe Systemaufgaben sind Timer häufig nachvollziehbarer als eine lange Crontab. Prüfen Sie nach Änderungen den nächsten Ausführungszeitpunkt und führen Sie den zugehörigen Service zunächst manuell aus.

