Tutorial: Linux Cron Jobs

In diesem Tutorial lernst du, was Cron Jobs sind, wie sie funktionieren und wie du sie einrichtest, um wiederkehrende Aufgaben in deinem Linux-System zu automatisieren.

1. Was ist ein Cron Job?

Ein Cron Job ist eine geplante Aufgabe, die auf Unix-basierten Betriebssystemen wie Linux zu einem bestimmten Zeitpunkt oder in bestimmten Intervallen automatisch ausgeführt wird. Der Cron-Daemon ist der Hintergrundprozess, der diese Aufgaben steuert. Cron Jobs werden häufig für wiederkehrende Aufgaben wie das Sichern von Daten, das Aktualisieren von Systemen oder das Ausführen von Skripten verwendet.

2. Cron Syntax

Die Cron-Syntax besteht aus fünf Feldern, die definieren, wann der Job ausgeführt werden soll, gefolgt vom Befehl, der ausgeführt werden soll:

* * * * * Befehl
- - - - -
| | | | |
| | | | +----- Wochentag (0-7) (0 oder 7 = Sonntag, 1 = Montag, ..., 6 = Samstag)
| | | +------- Monat (1-12)
| | +--------- Tag des Monats (1-31)
| +----------- Stunde (0-23)
+------------- Minute (0-59)

Beispiel:

30 2 * * * /path/to/script.sh

Dieser Cron Job führt das Skript script.sh jeden Tag um 02:30 Uhr aus.

3. Cron Job einrichten

Um Cron Jobs zu erstellen oder zu bearbeiten, benutzt du das Kommando crontab. Jede Benutzerin oder jeder Benutzer hat ihre bzw. seine eigene Crontab-Datei.

Crontab öffnen:

Um die Crontab zu bearbeiten, benutze den Befehl:

crontab -e

Dies öffnet den Crontab-Editor (meistens Vim oder Nano). Wenn du noch keine Crontab hast, wird eine neue Datei erstellt.

Crontab anzeigen:

Um deine aktuellen Cron Jobs anzuzeigen, kannst du folgenden Befehl verwenden:

crontab -l

Cron Job hinzufügen:

Füge in die Crontab-Datei eine Zeile hinzu, um einen Cron Job einzurichten. Zum Beispiel:

0 6 * * 1 /home/user/backup.sh

Dieser Job führt das Skript backup.sh jeden Montag um 6:00 Uhr aus.

Cron Job entfernen:

Um einen Cron Job zu entfernen, lösche die entsprechende Zeile aus der Crontab-Datei und speichere die Änderungen.

4. Spezialzeichen in Cron Jobs

Es gibt einige Sonderzeichen, die du in Cron Jobs verwenden kannst:

  • *: Für jede mögliche Ausführung. Beispiel: * * * * * bedeutet „jede Minute“.
  • ,: Liste von Werten. Beispiel: 0,15,30,45 * * * * bedeutet „jede Viertelstunde“.
  • -: Bereich. Beispiel: 1-5 * * * * bedeutet „jede Minute zwischen der 1. und der 5. Minute“.
  • /: Schrittweite. Beispiel: */10 * * * * bedeutet „alle 10 Minuten“.

Beispiel:

*/5 9-17 * * 1-5 /home/user/script.sh

Dieser Job führt das Skript script.sh von Montag bis Freitag zwischen 9:00 und 17:00 Uhr alle 5 Minuten aus.

5. Umleitungen und Protokollierung

Um Fehler oder Ausgaben eines Cron Jobs zu protokollieren, kannst du die Standardausgabe (stdout) und die Standardfehlerausgabe (stderr) in eine Datei umleiten:

* * * * * /path/to/command.sh > /path/to/output.log 2>&1
  • > leitet die Standardausgabe um.
  • 2>&1 leitet die Standardfehlerausgabe zur Standardausgabe um.

6. Systemweite Cron Jobs

Neben benutzerspezifischen Cron Jobs gibt es auch systemweite Cron Jobs, die in /etc/crontab definiert sind. Diese Datei enthält zusätzliche Felder für den Benutzer, der den Job ausführen soll:

Minute Stunde Tag Monat Wochentag Benutzer Befehl

Beispiel:

0 3 * * * root /usr/local/bin/cleanup.sh

Dieser Job wird jeden Tag um 3:00 Uhr als Benutzer root ausgeführt und führt das Skript cleanup.sh aus.

7. Cron Daemon neu starten

In den meisten Linux-Distributionen werden Änderungen an Cron Jobs automatisch übernommen. Falls du jedoch den Cron-Daemon manuell neu starten möchtest, kannst du dies mit folgendem Befehl tun:

sudo service cron restart

8. Cron Jobs überwachen

Um sicherzustellen, dass deine Cron Jobs korrekt ausgeführt werden, kannst du die Cron-Protokolle überprüfen. Die Ausgabe von Cron Jobs wird in der Regel in /var/log/syslog oder /var/log/cron gespeichert (abhängig von deiner Distribution).

Um die Protokolle zu durchsuchen, kannst du grep verwenden:

grep CRON /var/log/syslog

9. Praktische Beispiele

Tägliches Backup um 2:00 Uhr:

0 2 * * * /home/user/backup.sh

Neustart eines Dienstes jeden Montag um 4:00 Uhr:

0 4 * * 1 sudo systemctl restart apache2

Alle 15 Minuten ein Skript ausführen:

*/15 * * * * /home/user/script.sh

Tägliche E-Mail-Benachrichtigung senden:

0 9 * * * /home/user/email_notification.sh | mail -s "Tägliche Benachrichtigung" user@example.com

10. Fazit

Cron Jobs sind eine leistungsstarke Möglichkeit, wiederkehrende Aufgaben unter Linux zu automatisieren. Mit der richtigen Planung kannst du sicherstellen, dass dein System stets auf dem neuesten Stand ist, Backups durchgeführt werden und wichtige Dienste laufen. Wenn du mit der Cron-Syntax vertraut bist, eröffnen sich dir viele Möglichkeiten, Zeit zu sparen und deinen Workflow zu optimieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert