Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht


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 list derzeit 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 mit cat /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 --yes werden alle Treffer ohne Rückfrage gelöscht. Wähle ein Muster, das nur deinen Job trifft, und prüfe es vorher mit cron 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.

Weiter