Sie möchten Aufgaben auf Ihrem Server automatisieren? Dann ist das Einrichten von Cronjobs eine der ersten Fähigkeiten, die Sie als Serveradministrator oder Webentwickler beherrschen sollten. Cronjobs sind geplante Aufgaben, die zu festen Zeitpunkten automatisch ausgeführt werden, ohne dass Sie selbst dabei sein müssen. In dieser ausführlichen Anleitung lernen Sie alles über das Einrichten von Cronjobs auf Ihrem Linux-Server: von der grundlegenden Syntax bis zu fortgeschrittenen Anwendungen und Best Practices.

Was sind Cronjobs und warum sollten Sie lernen, sie einzurichten?

Ein Cronjob ist eine geplante Aufgabe auf einem Linux- oder Unix-System, die vom Cron-Daemon automatisch ausgeführt wird. Der Name Cron kommt vom griechischen Wort Chronos, das Zeit bedeutet. Durch das Einrichten von Cronjobs können Sie wiederkehrende Aufgaben automatisieren, etwa das Erstellen von Backups, das Versenden von Berichten, das Bereinigen von Logdateien und das Ausführen von Wartungsskripten.

Ob Sie einen VPS-Server verwalten oder Webhosting nutzen: Cronjobs sind ein wesentlicher Bestandteil professioneller Serververwaltung. Sie sparen Ihnen Zeit, verhindern menschliche Fehler und sorgen dafür, dass wichtige Aufgaben immer pünktlich ausgeführt werden.

Vorteile von Cronjobs

  • Automatisierung: Aufgaben werden zu jedem gewünschten Zeitpunkt automatisch ausgeführt, ohne menschliches Eingreifen
  • Zuverlässigkeit: Cronjobs werden im Gegensatz zu manuellen Aufgaben nie vergessen oder übersprungen
  • Zeitersparnis: Einmal einrichten, und Ihre Aufgaben laufen dauerhaft automatisch zu den geplanten Zeiten
  • Konsistenz: Jede Ausführung ist identisch, was Fehler durch manuelle Abweichungen verhindert
  • Flexibilität: Planen Sie Aufgaben pro Minute, Stunde, Tag, Woche oder Monat in jeder Kombination
  • Nächtliche Verarbeitung: Schwere Aufgaben laufen in Nebenzeiten, wenn der Server wenig ausgelastet ist

Cronjobs einrichten: die grundlegende Syntax erklärt

Bevor Sie Cronjobs einrichten können, müssen Sie die Crontab-Syntax verstehen. Jede Cronjob-Zeile besteht aus fünf Zeitfeldern, gefolgt vom auszuführenden Befehl. Die fünf Felder bestimmen, wann der Befehl ausgeführt wird.

FeldWertBereichBeschreibung
Minute0-59Jede Minute innerhalb der StundeIn welcher Minute der Befehl startet
Stunde0-23Jede Stunde des TagesIn welcher Stunde der Befehl läuft
Tag des Monats1-31Jeder Tag des MonatsAn welchem Tag des Monats
Monat1-12Jeder Monat des JahresIn welchem Monat der Befehl läuft
Wochentag0-70 und 7 sind SonntagAn welchem Wochentag der Befehl läuft

Sonderzeichen in der Crontab-Syntax

Neben numerischen Werten können Sie in Ihrer Cronjob-Definition Sonderzeichen verwenden, um komplexere Zeitpläne zu erstellen:

  • Sternchen *: Steht für jeden möglichen Wert dieses Feldes, also jede Stunde, jeden Tag und so weiter
  • Komma ,: Trennt mehrere Werte, sodass Sie zum Beispiel Montag und Freitag einplanen können
  • Bindestrich -: Definiert einen Wertebereich, zum Beispiel 1-5 für Montag bis Freitag
  • Schrägstrich /: Definiert ein Intervall, zum Beispiel */15 für alle 15 Minuten

Cronjobs auf Ihrem Linux-Server einrichten: Schritt für Schritt

Da Sie die Syntax nun verstehen, werden wir tatsächlich Cronjobs einrichten auf Ihrem Linux-Server. Folgen Sie diesen Schritten, um Ihren ersten Cronjob erfolgreich zu konfigurieren und zu testen.

Schritt 1: Den Crontab-Editor öffnen

Melden Sie sich per SSH an Ihrem Server an und öffnen Sie den Crontab-Editor mit dem Befehl crontab -e. Damit öffnet sich die Crontab des aktuellen Benutzers im Standard-Texteditor. Wenn Sie Cronjobs einrichten möchten, die als root laufen, verwenden Sie sudo crontab -e.

Schritt 2: Die Cronjob-Zeile schreiben

Fügen Sie am Ende der Datei eine neue Zeile hinzu. Jeder Teil der Zeile legt fest, wann und was ausgeführt werden soll. Verwenden Sie immer den vollständigen Pfad zu Befehlen und Skripten, denn Cronjobs laufen in einer minimalen Umgebung ohne die übliche PATH-Variable.

Schritt 3: Speichern und prüfen

Speichern Sie die Datei und schließen Sie den Editor. Der Cron-Daemon lädt die neue Konfiguration automatisch. Prüfen Sie Ihre aktiven Cronjobs mit dem Befehl crontab -l, der alle geplanten Aufgaben des aktuellen Benutzers anzeigt.

Praktische Beispiele für Cronjobs

  1. Tägliches Datenbank-Backup um 3 Uhr nachts: Planen Sie einen mysqldump-Befehl, der jede Nacht um 03:00 Uhr ein vollständiges Backup Ihrer Datenbank erstellt und es mit gzip komprimiert
  2. Wöchentlich Logdateien bereinigen: Löschen Sie jeden Sonntag um Mitternacht Logdateien, die älter als 30 Tage sind, um Speicherplatz freizugeben
  3. Stündlich den Cache leeren: Löschen Sie zu jeder vollen Stunde die Cache-Dateien Ihrer Anwendung, um frische Inhalte zu gewährleisten
  4. Täglicher SSL-Zertifikat-Check: Prüfen Sie jeden Morgen um 06:00 Uhr, ob Ihre SSL-Zertifikate bald ablaufen, und senden Sie eine Warnung
  5. Alle 5 Minuten ein Health Check: Prüfen Sie alle 5 Minuten, ob Ihr Webserver reagiert, und starten Sie ihn bei Problemen automatisch neu

Cronjobs für Backups einrichten: die komplette Anleitung

Eine der häufigsten Anwendungen von Cronjobs ist die Automatisierung von Backups. Wenn Sie Cronjobs einrichten, die Backups erstellen, sind Ihre Daten immer gesichert, ohne dass Sie manuell daran denken müssen. Das ist für jeden Produktionsserver unerlässlich.

Cronjob für Datenbank-Backups

Die Automatisierung von Datenbank-Backups gehört zu den ersten Dingen, die Sie auf jedem Produktionsserver erledigen sollten. Ein guter Backup-Plan erstellt täglich einen vollständigen Dump Ihrer Datenbank, komprimiert ihn und bewahrt die Backups der letzten 7 bis 30 Tage auf. Verwenden Sie mysqldump für MySQL- und MariaDB-Datenbanken oder pg_dump für PostgreSQL-Datenbanken.

Cronjob für Dateisystem-Backups

Neben Datenbank-Backups sollten Sie auch regelmäßig Backups Ihrer Dateien, Konfigurationen und Website-Daten erstellen. Verwenden Sie rsync für inkrementelle Backups, die nur geänderte Dateien kopieren, oder tar für vollständige komprimierte Archive. Planen Sie diese Backups in den Nachtstunden ein, wenn der Traffic auf Ihrem Server minimal ist.

Backup-Rotation einrichten

Es ist wichtig, ein Rotationssystem einzurichten, damit alte Backups automatisch gelöscht werden und Ihr Speicherplatz nicht vollläuft. Ein verbreitetes Schema ist, tägliche Backups 7 Tage, wöchentliche Backups 4 Wochen und monatliche Backups 12 Monate aufzubewahren.

Cronjobs für die Serverwartung einrichten

Neben Backups sind Cronjobs unverzichtbar, um regelmäßige Serverwartung zu automatisieren. Durch die Automatisierung dieser Aufgaben halten Sie Ihren Server gesund, leistungsfähig und sicher, ohne täglich manuell eingreifen zu müssen.

Automatische Updates

Konfigurieren Sie einen Cronjob, der täglich Sicherheitsupdates prüft und installiert. Unter Ubuntu und Debian können Sie unattended-upgrades konfigurieren und über einen Cronjob aktivieren. Unter CentOS und AlmaLinux verwenden Sie yum-cron oder dnf-automatic für denselben Zweck.

Logdateien verwalten

Logdateien können schnell wachsen und Ihren Speicherplatz auffressen, wenn Sie sie nicht verwalten. Auch wenn logrotate das Standardwerkzeug für die Logrotation ist, können Sie zusätzliche Cronjobs einrichten, um bestimmte Anwendungslogs je nach Alter oder Größe zu komprimieren, zu archivieren oder zu löschen.

Monitoring und Alerting

Richten Sie Cronjobs ein, die regelmäßig den Zustand Ihres Servers prüfen. Überwachen Sie Speicherplatz, Arbeitsspeichernutzung, CPU-Last und die Verfügbarkeit kritischer Dienste. Senden Sie automatisch Warnungen per E-Mail, wenn Schwellenwerte überschritten werden.

WartungsaufgabeHäufigkeitBeschreibung
SicherheitsupdatesTäglich um 04:00Verfügbare Sicherheitspatches prüfen und installieren
Datenbank-BackupTäglich um 03:00Vollständiger Datenbank-Dump mit Komprimierung
Datei-BackupTäglich um 03:30Inkrementelles Backup von Dateien und Konfigurationen
LogrotationWöchentlich sonntags 00:00Alte Logdateien komprimieren und archivieren
Cache bereinigenTäglich um 05:00Abgelaufene Cache-Dateien löschen
Speicherplatz-CheckAlle 6 StundenFreien Speicherplatz prüfen und bei weniger als 10 Prozent warnen
Service-Health-CheckAlle 5 MinutenPrüfen, ob alle kritischen Dienste aktiv sind

Cronjobs für Webanwendungen einrichten

Moderne Webanwendungen brauchen oft geplante Aufgaben, um Warteschlangen abzuarbeiten, geplante E-Mails zu versenden, Berichte zu erzeugen und abgelaufene Daten zu bereinigen. Das Einrichten von Cronjobs für Ihre Webanwendung ist daher unerlässlich.

Laravel Scheduler

Wenn Sie Laravel verwenden, können Sie den integrierten Task Scheduler nutzen. Sie müssen dann nur einen einzigen Cronjob einrichten, der jede Minute den Laravel Scheduler aufruft. Der Scheduler bestimmt anschließend anhand Ihrer PHP-Konfiguration, welche Aufgaben wann laufen sollen. Das ist eine elegante und gut beherrschbare Methode, Cronjobs zu organisieren.

WordPress-Cronjobs

WordPress hat ein eigenes Pseudo-Cron-System namens wp-cron, das Aufgaben ausführt, wenn jemand die Website besucht. Für eine zuverlässigere Ausführung können Sie wp-cron deaktivieren und einen echten System-Cronjob einrichten, der wp-cron.php zu festen Zeiten aufruft. So werden geplante Beiträge, E-Mails und Updates immer pünktlich verarbeitet.

Queue Worker und Hintergrundaufgaben

Viele Anwendungen nutzen Queue-Systeme, um Aufgaben asynchron zu verarbeiten. Auch wenn Queue Worker in der Regel als Hintergrundprozesse laufen, können Sie mit Cronjobs prüfen, ob der Queue Worker aktiv ist, und ihn automatisch neu starten, wenn das nicht der Fall ist.

Häufige Fehler beim Einrichten von Cronjobs

Beim Einrichten von Cronjobs passieren regelmäßig Fehler, die zu unerwartetem Verhalten oder nicht ausgeführten Aufgaben führen. Hier sind die häufigsten Fehler und wie Sie sie vermeiden.

  • Kein vollständiger Pfad: Cronjobs laufen in einer minimalen Umgebung. Verwenden Sie immer den vollständigen Pfad zu ausführbaren Dateien wie /usr/bin/php statt nur php
  • Ausgabe nicht umgeleitet: Ohne Umleitung der Ausgabe erzeugt jeder Cronjob eine E-Mail, was Ihren Posteingang überfluten kann. Leiten Sie die Ausgabe in eine Logdatei oder nach /dev/null um
  • Falsche Berechtigungen: Stellen Sie sicher, dass das Skript ausführbar ist und der Cron-Benutzer die nötigen Rechte hat, um das Skript auszuführen
  • Verwirrung um die Zeitzone: Cron verwendet standardmäßig die Systemzeitzone. Prüfen Sie Ihre Zeitzone mit timedatectl, um Überraschungen zu vermeiden
  • Überlappende Ausführungen: Dauert eine Aufgabe länger als das Intervall, können mehrere Instanzen gleichzeitig laufen. Verwenden Sie flock oder eine PID-Datei, um das zu verhindern
  • Fehlende Umgebungsvariablen: Cronjobs erben Ihre Shell-Umgebung nicht. Definieren Sie benötigte Variablen am Anfang Ihrer Crontab oder im Skript selbst

Cronjobs einrichten: fortgeschrittene Tipps und Best Practices

Über die Grundlagen hinaus gibt es fortgeschrittene Techniken, mit denen Sie das Einrichten von Cronjobs auf Ihren Produktionsservern professioneller und zuverlässiger gestalten.

Logging und Monitoring von Cronjobs

Sorgen Sie dafür, dass jeder Cronjob seine Ausgabe in eine Datei schreibt, damit Sie im Nachhinein prüfen können, ob die Aufgabe erfolgreich ausgeführt wurde. Ergänzen Sie Ihre Logdateien um Zeitstempel und richten Sie Alerting für fehlgeschlagene Ausführungen ein. Tools wie cronitor oder healthchecks.io können Sie warnen, wenn ein Cronjob nicht rechtzeitig ausgeführt wurde.

Flock für Sperren nutzen

Verwenden Sie den Befehl flock, um zu verhindern, dass mehrere Instanzen desselben Cronjobs gleichzeitig laufen. Flock setzt eine Dateisperre, die den Start einer zweiten Instanz verhindert, solange die erste noch aktiv ist. Das ist unerlässlich für Aufgaben, die nicht parallel laufen dürfen.

Fehlerbehandlung in Cronjob-Skripten

Bauen Sie eine Fehlerbehandlung in Ihre Skripte ein, damit Probleme erkannt und gemeldet werden. Prüfen Sie den Exit-Status von Befehlen und senden Sie bei Fehlern Benachrichtigungen. Ein gut geschriebenes Cronjob-Skript fängt Fehler ab, protokolliert sie und meldet sie dem Administrator, damit Probleme schnell behoben werden.

Häufige Fragen zum Einrichten von Cronjobs

Funktionieren Cronjobs auch auf Shared Hosting?

Ja, die meisten Webhosting-Anbieter bieten im Control Panel eine Oberfläche für Cronjobs. Der Funktionsumfang kann eingeschränkter sein als auf einem VPS, für einfache Aufgaben wie das Aufrufen von PHP-Skripten reicht er aber aus. Auf einem VPS-Server haben Sie die volle Kontrolle über die Crontab.

Wie prüfe ich, ob mein Cronjob tatsächlich läuft?

Prüfen Sie die Cron-Logdatei, die meist unter /var/log/cron oder /var/log/syslog zu finden ist. Sie können auch einen Test-Cronjob einrichten, der eine Datei anlegt oder eine Nachricht in eine Logdatei schreibt, um zu verifizieren, dass Cron korrekt funktioniert.

Kann ich einen Cronjob einrichten, der alle 30 Sekunden läuft?

Cron unterstützt als kleinstes Intervall eine Minute. Für Aufgaben, die häufiger laufen müssen, können Sie zwei Cronjobs einrichten, wobei der zweite ein sleep von 30 Sekunden enthält. Eine Alternative ist ein systemd-Timer oder ein Hintergrundprozess für Intervalle unter einer Minute.

Was ist der Unterschied zwischen crontab und /etc/cron.d?

Crontab ist die benutzerspezifische Cronjob-Konfiguration, die Sie mit crontab -e bearbeiten. Das Verzeichnis /etc/cron.d enthält systemweite Cronjob-Dateien, die von Softwarepaketen abgelegt werden und ein zusätzliches Benutzerfeld enthalten, das angibt, unter welchem Benutzer der Befehl laufen soll.

Cronjobs einrichten ist eine grundlegende Fähigkeit für alle, die einen Server verwalten. Von einfachen Backups bis zu komplexen Automatisierungs-Pipelines: Cronjobs ermöglichen es, Ihren Server zuverlässig und effizient ohne ständiges manuelles Eingreifen zu betreiben. Beginnen Sie mit Grundaufgaben wie Backups und Wartung und bauen Sie Ihre Automatisierung schrittweise aus, je mehr Erfahrung Sie sammeln. Sehen Sie sich unser VPS-Hosting-Angebot für Server an, auf denen Sie die volle Kontrolle über Cronjobs haben, oder wählen Sie Webhosting mit integrierten Cron-Funktionen.

Häufige Fehler beim Einrichten von Cronjobs

Beim Einrichten von Cronjobs machen viele Administratoren dieselben Fehler. Der häufigste Fehler ist die Verwendung relativer Pfade in Cron-Befehlen. Da Cron in einer minimalen Umgebung ohne die üblichen PATH-Variablen läuft, müssen Sie immer absolute Pfade verwenden. Schreiben Sie zum Beispiel /usr/bin/php /var/www/html/cron.php statt php cron.php. So verhindern Sie, dass Ihr Cronjob ohne Fehlermeldung stillschweigend fehlschlägt.

Ein zweiter häufiger Fehler ist, die Ausgabe von Cronjobs nicht umzuleiten. Standardmäßig versucht Cron, die Ausgabe per E-Mail zu versenden, was zu Problemen führen kann, wenn Ihr Mailserver nicht korrekt konfiguriert ist. Fügen Sie > /dev/null 2>&1 am Ende Ihres Cron-Befehls hinzu, wenn Sie die Ausgabe nicht brauchen, oder leiten Sie sie mit >> /var/log/mijn-cron.log 2>&1 für eine spätere Analyse in eine Logdatei um.

Schließlich vergessen viele Administratoren, die Zeitzoneneinstellung ihres Servers zu prüfen. Cronjobs laufen nach der Serverzeit, die von Ihrer Ortszeit abweichen kann. Prüfen Sie die Zeitzone mit dem Befehl timedatectl und passen Sie sie bei Bedarf an. Das ist vor allem bei Aufgaben wichtig, die zu bestimmten Zeitpunkten laufen müssen, etwa tägliche Backups um Mitternacht.

Monitoring und Logging automatisierter Aufgaben

Effektives Monitoring ist beim Einrichten von Cronjobs auf Ihrem Server unverzichtbar. Ohne Monitoring wissen Sie nicht, ob Ihre automatisierten Aufgaben erfolgreich laufen oder stillschweigend fehlschlagen. Implementieren Sie ein Logging-System, das festhält, wann jeder Cronjob startet, endet und welchen Exit-Code er zurückgibt. Ein Exit-Code von 0 bedeutet Erfolg, jeder andere Wert weist auf einen Fehler hin.

Erwägen Sie für kritische Cronjobs einen externen Monitoring-Dienst wie die in Server-Monitoring-Tools beschriebenen. Diese Dienste erwarten zu festen Zeiten ein Signal von Ihrem Server und warnen Sie, wenn es ausbleibt. Das ist besonders wertvoll für Backup-Aufgaben und Sicherheitsscans, die nicht unbemerkt fehlschlagen dürfen.

Halten Sie Ihre Logdateien beherrschbar, indem Sie eine Logrotation einrichten. Ohne Rotation wachsen Logdateien unbegrenzt und füllen schließlich Ihren Speicherplatz. Konfigurieren Sie logrotate so, dass Ihre Cron-Logdateien wöchentlich rotiert und höchstens vier Wochen aufbewahrt werden. So haben Sie genügend Verlauf für die Fehlersuche, ohne unnötig Speicherplatz zu verschwenden.

Fortgeschrittene Automatisierung mit Cronjobs

Über einfache geplante Aufgaben hinaus bietet das Einrichten von Cronjobs Möglichkeiten für fortgeschrittene Automatisierung. Sie können Cronjobs nutzen, um SSL-Zertifikate über Let's Encrypt automatisch zu erneuern, Datenbankwartung durchzuführen und Leistungsmetriken zu sammeln. Durch die geschickte Kombination mehrerer Aufgaben schaffen Sie eine vollständig automatisierte Serverumgebung, die nur minimale manuelle Wartung erfordert.

Eine wirkungsvolle Technik ist das Verketten von Cronjobs: Lassen Sie ein Skript erst laufen, wenn ein vorheriges Skript erfolgreich abgeschlossen wurde. Verwenden Sie dafür bedingte Ausführung mit &&-Operatoren oder schreiben Sie ein Wrapper-Skript, das Reihenfolge und Abhängigkeiten steuert. Das ist besonders nützlich bei Prozessen aus mehreren Schritten, etwa zuerst einen Datenbank-Dump erstellen, ihn dann komprimieren und anschließend auf einen externen Speicher hochladen.

Für komplexere Automatisierungsanforderungen können Sie einen Umstieg von klassischen Cronjobs auf Task Scheduler wie Systemd Timers in Betracht ziehen. Diese bieten Vorteile wie ereignisgesteuerte Planung, bessere Logging-Integration und Abhängigkeitsverwaltung. Für die meisten Hosting-Umgebungen reichen klassische Cronjobs jedoch völlig aus, vor allem in Kombination mit gutem Monitoring und sauberer Fehlerbehandlung.

Ein gut automatisierter Server erspart Ihnen langfristig Hunderte Stunden manueller Arbeit. Investieren Sie Zeit in das korrekte Einrichten von Cronjobs, und Sie profitieren jahrelang davon. Dokumentieren Sie alle Ihre Cronjobs in einer übersichtlichen Datei, einschließlich des Zwecks jeder Aufgabe, des erwarteten Verhaltens und der Ansprechperson bei Problemen. Diese Dokumentation ist unverzichtbar, wenn ein Kollege die Verwaltung übernimmt oder wenn Sie nach Monaten eine bestehende Aufgabe ändern müssen.

Zum Schluss: Testen Sie Ihre Cronjobs immer manuell, bevor Sie sie einplanen. Führen Sie den Befehl manuell im Terminal aus und prüfen Sie, ob das erwartete Ergebnis eintritt. Erst danach fügen Sie ihn der Crontab hinzu. Dieser einfache Schritt verhindert, dass ein falsch konfigurierter Cronjob stunden- oder tagelang unbemerkt fehlschlägt. Mit einem strukturierten Ansatz zur Automatisierung wird Ihr Server zu einer zuverlässigen Maschine, die Tag und Nacht für Sie arbeitet.