CodeGym /Kurse /Docker SELF /Automatisierung von Aufgaben mit Cron und At

Automatisierung von Aufgaben mit Cron und At

Docker SELF
Level 3 , Lektion 5
Verfügbar

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

  1. Öffne deine crontab zum Bearbeiten:

    crontab -e
    
  2. 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.

  3. Ü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:

  1. Schreibe ein Skript:

    #!/bin/bash
    tar -czf /backup/logs_$(date +\%Y-\%m-\%d).tar.gz /var/logs
  2. 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:

  1. 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
  2. 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

  1. Erstelle eine Aufgabe für eine Benachrichtigung in 2 Minuten:

    echo "notify-send 'Zeit ist abgelaufen!'" | at now + 2 minutes
    
  2. Überprüfe die Liste der Aufgaben:

    atq
    
  3. 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!

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION