Cron führt Befehle nach wiederkehrenden Zeitplänen ohne interaktive Shell aus. Automatisierung wiederholt sowohl korrektes Verhalten als auch Fehler. Teste deshalb den Befehl, verwende ausdrückliche Pfade, begrenze Berechtigungen und plane Protokollierung sowie Fehlerbenachrichtigung, bevor du ihn einplanst.
Prozessauslastung · Lektion 8
Cron-Jobs
Lerne, wiederkehrende Aufgaben mit cron zu erstellen, zu untersuchen, zu testen und sicher zu betreiben.
Einen Crontab-Eintrag lesen
Ein Eintrag in einer Benutzer-Crontab enthält fünf Zeitfelder, gefolgt von einem Befehl:
30 8 * * * /home/pete/scripts/change_wallpaper
Von links nach rechts sind die Felder Minute, Stunde, Tag des Monats, Monat und Wochentag. Dieses Beispiel wird entsprechend der für den Cron-Daemon geltenden Zeitzone um 08:30 Uhr ausgeführt. Ein Sternchen bezeichnet jeden erlaubten Wert in diesem Feld.
Wenn sowohl der Tag des Monats als auch der Wochentag eingeschränkt sind, führen viele Cron-Implementierungen den Befehl aus, sobald eines der beiden Felder übereinstimmt. Bestätige die lokale Semantik, bevor du einen Zeitplan erstellst, der beide verwendet.
Wann wird 30 8 * * * command ausgeführt?
Eine Benutzer-Crontab verwalten
Bearbeite die Crontab des aktuellen Benutzers mit:
$ crontab -e
Liste die installierten Einträge vor und nach einer Änderung auf:
$ crontab -l
crontab -r entfernt die gesamte Crontab des Benutzers, möglicherweise ohne einen Editor zu öffnen. Verwende den Befehl nicht, um eine einzelne Zeile zu entfernen; bearbeite die Crontab und überprüfe die verbleibenden Einträge.
Welcher Befehl listet die installierten Cron-Einträge des aktuellen Benutzers auf?
Die Cron-Umgebung berücksichtigen
Cron stellt gewöhnlich eine eingeschränkte Umgebung und eine nicht interaktive Shell bereit. Verwende absolute Befehls- und Dateipfade, lege erforderliche Variablen ausdrücklich fest und verlasse dich weder auf Aliase noch auf ein aktuelles Terminalverzeichnis oder Shell-Startdateien.
Leite Standardausgabe und Standardfehler in ein kontrolliertes Protokoll um oder verwende einen für das System geeigneten Benachrichtigungsmechanismus. Schütze Anmeldedaten mit restriktiven Berechtigungen und bette Geheimnisse nicht direkt in einen Crontab-Befehl ein.
Warum sollte ein Cron-Befehl ausdrückliche Pfade und Umgebungseinstellungen verwenden?
Testen und Überschneidungen verhindern
Führe das Skript als derselbe Benutzer mit einer ähnlich minimalen Umgebung manuell aus. Sorge dafür, dass es aussagekräftige Exit-Statuswerte zurückgibt und Ergebnisse mit Zeitstempeln schreibt. Warte nach der Installation auf einen harmlosen Testzeitplan oder einen kontrollierten Lauf und überprüfe die tatsächliche Wirkung sowie die Protokolle.
Falls ein Lauf länger als sein Intervall dauern kann, entwirf ihn für Nebenläufigkeit oder verwende, sofern verfügbar, einen Sperrmechanismus wie flock:
*/5 * * * * /usr/bin/flock -n /run/user/1000/report.lock /home/pete/bin/report
Wähle einen Sperrpfad, den der Jobbenutzer sicher erstellen darf, und entscheide, ob ausgelassene Läufe akzeptabel sind. Cron garantiert nicht automatisch, dass nur eine Instanz läuft.
Welches Risiko besteht, wenn ein Job länger als sein Zeitplanintervall dauert?
Den passenden Scheduler auswählen
Cron eignet sich für einfache wiederkehrende Befehle. Systemd-Timer können auf systemd-Hosts Abhängigkeitsintegration, dauerhaftes Nachholen verpasster Läufe, zufällige Verzögerungen und Journalprotokollierung bieten. Anwendungs- oder Cluster-Scheduler können sicherer sein, wenn ein Job über mehrere Rechner hinweg genau einmal laufen muss.
Warum kann gewöhnliches hostbezogenes Cron für einen Cluster-Job, der genau einmal laufen soll, ungeeignet sein?
Lektion abgeschlossen
Sie haben Cron-Jobs abgeschlossen
Du kannst einen wiederkehrenden Cron-Job nun mit ausdrücklichen Annahmen zu Zeitplan und Ausführung betreiben.
Lies die fünf Zeitfelder in ihrer festgelegten Reihenfolge.
Untersuche und bearbeite Benutzer-Crontabs, ohne unabhängige Jobs zu löschen.
Definiere Pfade, Umgebung, Protokollierung und Umgang mit Anmeldedaten.
Teste als Jobbenutzer und schütze vor unerwünschten Überschneidungen.
Wähle einen Scheduler, der zu Host- und Koordinierungsanforderungen passt.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen