Server Tools: Cronjobs
Cronjobs mit Server Tools: Dateien in /etc/cron.d anlegen, auflisten und entfernen, Namensregeln, erlaubte Schedules und Befehle, und warum cron remove vorsichtig verwendet werden muss.
Cronjobs
Server Tools verwaltet systemweite Cronjobs als einzelne Dateien in /etc/cron.d/. Jeder Job läuft als root.
Job anlegen
server-tools cron add --schedule '0 3 * * *' --command '/usr/local/bin/cleanup.sh' --name 'nightly-cleanup'
Alle drei Optionen sind Pflicht. Das Tool schreibt die Datei /etc/cron.d/<name> mit Rechten 644:
# Cron Job - Created 2026-01-15 03:00:00 by server-tools
0 3 * * * root /usr/local/bin/cleanup.sh
Name
Der Name wird in Kleinbuchstaben umgewandelt, jedes Zeichen außer a-z, 0-9, _ und - wird zu _. Aus Nightly Cleanup wird nightly_cleanup. Existiert die Datei, fragt das Tool Overwrite existing cron job?. Mit --yes wird sie ohne Rückfrage überschrieben.
Schedule
Fünf Felder, die nur aus Ziffern und den Zeichen *, /, , und - bestehen, zum Beispiel */15 * * * * oder 0 4 * * 1-5. Namen wie mon oder jan und Kürzel wie @daily werden abgelehnt.
Befehl
Höchstens 500 Zeichen, nur druckbare Zeichen, kein Zeilenumbruch.
Auflisten
server-tools cron list
Zeigt jede Datei in /etc/cron.d mit ihrem Inhalt und danach den Root-Crontab (crontab -l). Es werden alle Dateien gezeigt, nicht nur die, die Server Tools angelegt hat.
Als CLI-Befehl gibt
cron listderzeit nur die erste Datei aus und beendet sich dann mit Exit-Code 1. Im Menü ("List cron jobs") läuft die Ausgabe vollständig durch. Auf der Shell zeigst du die Dateien mitcat /etc/cron.d/*an.
Entfernen
server-tools cron remove --pattern nightly-cleanup
Das Tool durchsucht alle Dateien in /etc/cron.d/ nach dem Suchtext (als fester Text, nicht als regulärer Ausdruck). Für jeden Treffer zeigt es den Inhalt und fragt Delete this cron job?. Gelöscht wird die ganze Datei. Gibt es keinen Treffer, endet der Befehl mit Exit-Code 1.
Die Suche beschränkt sich nicht auf Dateien von Server Tools. Auch Cron-Dateien anderer Pakete werden gefunden, wenn sie den Text enthalten. Mit
--yeswerden alle Treffer ohne Rückfrage gelöscht. Wähle ein Muster, das nur deinen Job trifft, und prüfe es vorher mitcron list.
Beispiel: tägliches Datenbank-Backup
server-tools cron add \
--schedule '0 2 * * *' \
--command '/usr/local/bin/server-tools --yes db backup --name shop_db' \
--name 'db-backup-shop'
Verwende für Cronjobs db backup je Datenbank. Für db backup-all beachte die Einschränkung auf der Seite Datenbanken.