Automatisierung von Aufgaben mit cron
und at
1. Warum ist Automatisierung wichtig?
Automatisierung von Aufgaben ist das A und O für jeden Systemadministrator, insbesondere unter Linux. Stell dir vor, ohne Automatisierung zu arbeiten: Jeden Morgen öffnest du dein Terminal und gibst denselben Befehl ein, um deine Daten zu sichern, sie zu archivieren, auf den Server zu schicken und alte Logs zu löschen. Nach einer Woche solcher Routine würdest du über einen Jobwechsel nachdenken… Aber nein, wir sind hier, um dir beizubringen, wie du die Maschine zu deinem treuen Diener machst.
Die heutige Vorlesung ist Magie von Zeit und Aufgaben. Wir lernen, Prozesse auf Betriebssystemebene mithilfe der unglaublichen Tools cron
und at
zu automatisieren. Diese Utilities sparen eine Menge Zeit und manchmal auch Nerven.
Automatisierung ist ein Rettungsring für jede Routineaufgabe. Zum Beispiel hast du ein Skript, das einen Bericht für deinen Chef generiert. Dieser Bericht wird jeden Morgen um 8:00 Uhr benötigt. Anstatt früher aufzustehen, um das Skript manuell zu starten (und riskierst, mit einer Tasse Kaffee steckenzubleiben und es zu vergessen), kannst du cron
so einrichten, dass es diese Aufgabe automatisch erledigt.
cron
— ist ein Tool für regelmäßige Aufgaben, die zu einer festgelegten Zeit wiederholt werden.
at
— ist ein Utility für einmalige Aufgaben, die zu einem bestimmten Zeitpunkt ausgeführt werden sollen.
2. Arbeiten mit cron
Was ist cron
?
cron
ist ein Daemon (Systemprozess), der im Hintergrund läuft und Aufgaben zu einer festgelegten Zeit ausführt. Zeitpläne für diese Aufgaben werden in sogenannten crontab
-Dateien gespeichert – das sind Textdateien. Jeder Benutzer im System kann seine eigene crontab
haben.
Deine erste Aufgabe in cron
So sieht der grundlegende Befehl für die Arbeit mit cron
aus:
crontab -e
Dieser Befehl öffnet die crontab
des aktuellen Benutzers zum Bearbeiten. Du kannst Aufgaben hinzufügen, indem du das Zeitplanformat angibst.
Syntax des Zeitplans
Eine Zeile in der crontab
besteht aus sechs Feldern:
* * * * * COMMAND
- - - - -
| | | | └─ Wochentag (0–7, wobei 0 und 7 Sonntag sind)
| | | └── Monat (1–12)
| | └─── Tag des Monats (1–31)
| └──── Stunde (0–23)
└───── Minute (0–59)
Beispiel: Führe echo "Hallo, Linux"
jeden Tag um 12 Uhr mittags aus:
0 12 * * * echo "Hallo, Linux"
Praxis: eine einfache Aufgabe starten
Öffne deine
crontab
zum Bearbeiten:crontab -e
Füge die folgende Zeile hinzu:
*/5 * * * * echo "Hallo, Welt! Die Zeit ist $(date)" >> ~/cron_test.log
Diese Aufgabe fügt alle 5 Minuten eine Zeile mit der aktuellen Zeit in die Datei
cron_test.log
ein. Speichere die Datei und schließe sie.Überprüfe, ob die Aufgabe gestartet wurde:
tail -f ~/cron_test.log
Nach 5 Minuten solltest du eine aktualisierte Eingabe in der Datei sehen.
Angesehene Aufgaben anzeigen
Um die aktuellen Aufgaben zu überprüfen:
crontab -l
Aufgaben entfernen
Um alle Aufgaben aus der crontab
zu entfernen:
crontab -r
Echte Anwendungsbeispiele für cron
Dateien archivieren
Angenommen, du möchtest Dateien aus dem Verzeichnis /var/logs
jede Nacht um 3 Uhr archivieren:
Schreibe ein Skript:
#!/bin/bash tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
Legen den Zeitplan in der
crontab
fest:0 3 * * * /path/to/script.sh
Und das war's! Du wirst nie mehr das Backup vergessen.
Benachrichtigung über Systemlast
Zum Beispiel möchtest du benachrichtigt werden, wenn die CPU-Auslastung über 80 % steigt:
Schreibe ein Skript:
#!/bin/bash LOAD=$(uptime | awk '{print $10}' | sed 's/,//') if (( $(echo "$LOAD > 0.80" | bc -l) )); then echo "Hohe CPU-Auslastung: $LOAD" | mail -s "CPU-Warnung" du@example.com fi
Lege den Zeitplan fest:
*/10 * * * * /path/to/cpu_check.sh
3. Arbeiten mit at
at
erlaubt es, eine einmalige Aufgabe zu einem bestimmten Zeitpunkt auszuführen. Im Gegensatz zu cron
werden at
-Aufgaben nicht wiederholt. Das ist praktisch für Aufgaben wie "mach das morgen um 9 Uhr morgens".
Einfache Aufgabe mit at
Hier ist ein Beispiel, wie man eine Aufgabe plant:
echo "echo 'Hallo, Linux!'" | at now + 1 minute
Dieser Befehl führt den Befehl echo 'Hallo, Linux!'
in einer Minute aus.
Du kannst eine genaue Uhrzeit und ein genaues Datum angeben:
echo "echo 'Backup abgeschlossen!'" | at 10:30 AM tomorrow
Verwalten von at
-Aufgaben
Nachdem du eine Aufgabe hinzugefügt hast, kannst du die Liste der laufenden Aufgaben anzeigen:
atq
Beispielausgabe:
1 Tue Oct 31 10:30:00 2023 a user
2 Tue Oct 31 11:00:00 2023 a user
Um eine Aufgabe zu löschen:
atrm <job_id>
Übung: Nutzung von at
für Benachrichtigungen
Erstelle eine Aufgabe für eine Benachrichtigung in 2 Minuten:
echo "notify-send 'Zeit ist abgelaufen!'" | at now + 2 minutes
Überprüfe die Liste der Aufgaben:
atq
Warte, bis das Popup-Fenster in 2 Minuten erscheint.
4. Typische Fehler bei der Arbeit mit cron
und at
Eines der häufigsten Probleme ist das Angeben eines falschen Pfads zu einem Skript oder Befehl. Denke daran, dass cron
in einer minimalen Umgebungsumgebung ausgeführt wird und möglicherweise nichts über deine Variablen wie PATH
weiß. Der beste Weg ist, absolute Pfade zu verwenden.
Zum Beispiel, wenn du ein Python-Skript starten möchtest:
*/30 * * * * /usr/bin/python3 /path/to/script.py
Stelle außerdem sicher, dass das Skript Ausführungsrechte hat:
chmod +x /path/to/script.sh
Wo wird das nützlich sein?
Fähigkeiten zur Automatisierung werden in fast jedem IT-Beruf benötigt. Du kannst dieses Wissen nutzen:
- Zur Automatisierung von routinemäßigen Systemaufgaben.
- Zur Einrichtung regelmäßiger Backups.
- Zum Überwachen des Serverzustands.
- In Bewerbungsgesprächen, wo oft nach
cron
und Automatisierung gefragt wird.
Wenn du im Bereich DevOps, Systemadministration arbeitest oder einfach produktiver sein möchtest, wird dir das Verständnis von cron
und at
helfen, herauszustechen und eine Menge Zeit zu sparen.
Jetzt weißt du, wie du Linux für dich arbeiten lassen kannst. Das nächste Mal, wenn sich jemand über Routinen beschwert, lächle einfach, weil du ein Automatisierungsmeister bist!
GO TO FULL VERSION