Cron Jobs: Wenn Dein Schlafrhythmus Zählt

Veröffentlicht: von Matt Stamp
Cron Jobs: Wenn Dein Schlafrhythmus Zählt thumbnail

Möchtest Du um 2 Uhr morgens aufwachen, die Protokolle leeren, temporäre Dateien säubern und jeden einzelnen Tag dieselben Serverwartungsaufgaben durchführen?

Nun, ich auch nicht. Auch nicht die Millionen von Serveradministratoren, die die über 14 Milliarden Server weltweit verwalten.

Also, stoppe den Wahnsinn — ich bitte dich!

Cron Jobs sind genau dafür gemacht.

Weil, ehrlich gesagt, nichts sagt „kompetenter Systemadministrator“ wie im Tiefschlaf zu sein und sich das Verdienst für die Arbeit anzueignen, die deine Skripte für dich erledigen. Das nennt man „deine Ressourcen nutzen.

Mit Cron Jobs:

  • Dein Chef denkt, dass Du engagiert bist. 
  • Dein Server weiß, dass Du faul bist. 
  • Du hast eine wunderschöne symbiotische Beziehung, die Automation genannt wird. 

Heute wirst Du ein Cron Job-Profi.

Zuerst, Was Ist Ein Cron Job? (Die Nicht Langweilige Version)

Ein Cron Job ist im Wesentlichen ein in Unix-ähnliche Betriebssysteme (Linux, macOS) integrierter Aufgabenplaner, der es dir ermöglicht, Linux-Befehle automatisch zu festgelegten Zeiten und Daten auszuführen.

Denke daran wie eine To-Do-Liste für Deinen Server, aber…diese wird tatsächlich abgearbeitet.

Cron In Metaphern

Wenn deine Serverinfrastruktur ein Restaurant wäre:

  • Der Cron Daemon ist der Manager, der den täglichen Zeitplan überprüft.
  • Die Crontab ist das Zuweisungsbrett für das Personal.
  • Jeder Cron Job ist eine Aufgabe, die einem bestimmten Mitarbeiter zu einer bestimmten Zeit zugewiesen wird.
  • Der Befehl ist die tatsächlich ausgeführte Arbeit.

Wenn die Uhr die geplante Zeit erreicht, tippt der Manager dem zugewiesenen Mitarbeiter auf die Schulter und sagt: „Es ist Showtime!“

Der Mitarbeiter führt dann seine Aufgabe ohne Frage oder Beschwerde aus.

Wenn wir Menschen nur so zuverlässig wären, wäre die Welt ein anderer Ort!

Die Anatomie eines Cron Jobs

Jeder Cron Job besteht aus zwei Hauptteilen:

  1. Wann ausführen (der Zeitplan)
  2. Was ausführen (das auszuführende Kommando oder Skript)

Der Zeitplan verwendet eine spezielle Syntax, die auf den ersten Blick wie Computerzauberei aussehen könnte:

Sieh dir das aber genauer an und es wird Sinn ergeben.

Jedes Sternchen kann durch spezifische Werte, Bereiche oder Intervalle ersetzt werden, um genau den Zeitplan zu erstellen, den Du benötigst.

Warum Server-Admins Cron Jobs Lieben

Es gibt einen Grund, warum Server-Administratoren (sogar ich) emotional werden, wenn sie über Cron Jobs sprechen.

Sie verwandeln das Servermanagement in etwas, das (zumindest entfernt) an eine Work-Life-Balance erinnert.

1. Sie Sparen Dir Zeit

Erinnerst Du Dich an die Zeit? Dieses Ding, von dem Du nie genug hast? Cron Jobs geben sie Dir zurück. Du stellst sie ein, vergisst sie und schaust eigentlich nie wieder nach.

(Nun, bis sie kaputt gehen oder du den Zeitplan ändern musst.)

2. Sie Erhalten Die Konsistenz

Menschen sind inkonsistent. Wir vergessen Dinge. Wir machen Tippfehler. Wir lassen uns von Katzenvideos ablenken. Cron Jobs führen die exakte Aufgabe jedes Mal auf die exakt gleiche Weise aus — ohne Ausnahmen.

3. Dein Server Schläft Nie

Mit Cron Jobs findet die wesentliche Wartung 24/7/365 statt, egal ob Du wach bist, schläfst oder an einem Strand Margaritas schlürfst.

4. Fehlerprotokolle > Menschliches Gedächtnis

Kannst Du Dich genau daran erinnern, was Du manuell gemacht hast und wann genau Du es gemacht hast? Wahrscheinlich nicht.

Aber Cron Jobs können so konfiguriert werden, dass sie ihre Aktivitäten protokollieren, wodurch ein Papierpfad aller automatisierten Aktionen für Fehlerbehebung und Überprüfung erstellt wird.

5. Sie Sind Auf Skalierbarkeit Ausgelegt

Wenn deine Infrastruktur wächst, wird das manuelle Verwalten zunehmend schwieriger. Cron Jobs skalieren mühelos.

Das bedeutet, dass der gleiche Job auf mehreren Servern ausgeführt werden kann, ohne dass zusätzliche Zeit von Dir benötigt wird.

Erhalten Sie Inhalte direkt in Ihren Posteingang

Abonnieren Sie jetzt, um alle neuesten Updates direkt in Ihren Posteingang zu erhalten.

Cron Jobs Einrichten: Eine Schritt-Für-Schritt-Anleitung

Genug Theorie! Du musst praktische Erfahrungen mit der Einrichtung eines Cron Jobs sammeln.

Schritt 1: Bestätige, Dass Cron Installiert Ist

Die meisten Unix-ähnlichen Systeme haben Cron vorinstalliert. Um zu überprüfen, ob es zur Verwendung verfügbar ist, gebe den folgenden Befehl ein:

crontab -e

Je nach Standardeditor wird der Befehl den Cron Job in deinem spezifischen Editor öffnen. Wenn du Cron Job zuvor noch nie verwendet hast, wird möglicherweise gefragt, ob du den Standardeditor festlegen möchtest.

Wenn das Terminal mit Befehl nicht gefunden antwortet, musst Du Cron mit den folgenden Befehlen installieren:

  • Auf Ubuntu/Debian: sudo apt update && sudo apt install cron
  • Auf CentOS/RHEL:  sudo yum install cronie

Sobald fertig, starte und aktiviere den Cron Job:

sudo systemctl start cron
sudo systemctl enable cron

Mit den start– und enable-Befehlen starten wir den Cron-Job-Dienst, um die Cron Jobs auszuführen.

Und mit aktivieren stellen wir sicher, dass selbst wenn dein Server neu startet, der Cron-Dienst automatisch mit ihm neu startet und keine Cron Jobs verpasst werden.

Nerd-Hinweis: CentOS bezeichnet den Cron-Dienst als „crond“, daher musst Du den crond-Dienst starten und aktivieren.

Schritt 2: Verständnis Des Cron Job

Okay, öffne den Cron Job oder die Crontabelle, um deine geplanten Aufgaben hinzuzufügen.

Jeder Benutzer im System kann seine eigene Crontab-Datei haben. Zusätzlich gibt es eine systemweite Crontab.

Um deine persönliche Crontab zu bearbeiten:

crontab -e

Dies öffnet deine Cron Job-Datei in deinem Standard-Texteditor. Wenn du dies zum ersten Mal machst, wähle den nano-Editor (Option 1), da er am anfängerfreundlichsten ist.

Für systemweite Cron Jobs, führe den folgenden Befehl mit sudo-Rechten aus:

sudo nano /etc/crontab

Schritt 3: Cron Job Syntax

Wir haben bereits über die grundlegende Struktur in der Anatomie von Cron Jobs gesprochen.

Aber das Erstellen eines Cron Jobs kann manchmal verwirrend sein. Crontab.guru hilft Dir, die Jobzeiten zu visualisieren, während Du sie eingibst.

Jetzt zum spaßigen Teil — wir schreiben unseren ersten Cron Job. Schauen wir uns einige gängige Zeitpläne für Cron Jobs an:

Jede Minute:

* * * * /path/to/command

Jede Stunde zur Minute 0:

0 * * * * /path/to/command

Jeden Tag um Mitternacht:

0 0 * * * /path/to/command

Jeden Montag um 3 Uhr morgens:

0 3 * * 1 /path/to/command

Alle 15 Minuten:

*/15 * * * * /path/to/command

Erster Tag jedes Monats um 6:30 Uhr:

30 6 1 * * /path/to/command

Schritt 4: Deinen Ersten Cron Job Erstellen

Lass uns damit beginnen, einen einfachen Backup Cron Job für deinen Server zu erstellen.

Die untenstehende Aufgabe erstellt ein Backup deiner Website jeden Tag um 2 Uhr morgens.

0 2 * * * tar -czf /path/to/backup/website-backup-$(date +%Y%m%d).tar.gz /path/to/your/website

Es wird ein komprimiertes Tar-Archiv deines Website-Verzeichnisses mit dem aktuellen Datum als Dateiname ausgegeben.

Schritt 5: Speichern und Überprüfen

Jetzt verlasse den Editor. Bei nano drücke Ctrl+X und dann Y.

Um deine aktuelle Crontab anzuzeigen und zu überprüfen, ob dein Job hinzugefügt wurde:

crontab -l

Das war’s! Dein erster Cron Job ist jetzt eingerichtet und wird automatisch zur geplanten Zeit ausgeführt.

Praktische Cron Job Beispiele für Website-Manager

Jetzt, da Du die Grundlagen kennst, lass uns einige praktische Cron Jobs erkunden, die Dein Leben als Website-Manager erheblich erleichtern können.

Datenbanksicherungen

MySQL-Datenbanksicherung (täglich um 1 Uhr morgens):

0 1 * * * mysqldump -u username -p'password' database_name | gzip > /path/to/backups/db-backup-$(date +%Y%m%d).sql.gz

Log-Rotation und Bereinigung

Bereinige Protokolle, die älter als 7 Tage sind (wöchentlich am Sonntag):

0 0 * * 0 find /path/to/logs -type f -name "*.log" -mtime +7 -delete

Überwachung Der Website-Leistung

Prüfe die Antwortzeit der Website alle 5 Minuten:

*/5 * * * * curl -o /dev/null -s -w "%{http_code} %{time_total}sn" example.com >> /path/to/logs/website-performance.log

Inhaltsaktualisierungen

Dynamischen Inhalt abrufen und aktualisieren (jede Stunde):

0 * * * * /path/to/content-update-script.sh

E-Mail-Berichte

Sende eine wöchentliche Verkehrszusammenfassung jeden Montag um 9 Uhr:

0 9 * * 1 /path/to/generate-and-email-report.sh

Sicherheitsüberprüfungen

Führe jeden Nacht um 3 Uhr ein Sicherheitsscanskript aus:

0 3 * * * /path/to/security-scan.sh

Cron Job Best Practices: Dos und Don’ts

Um sicherzustellen, dass Deine Cron Jobs reibungslos laufen und nicht mehr Probleme verursachen, als sie lösen, sind hier einige wichtige bewährte Methoden.

Die Dos

  1. Verwende Immer Vollständige Pfade Zu Befehlen Und Dateien: Deine Cron-Umgebung hat nicht denselben PATH wie deine User-Shell, daher ist “/usr/bin/python” besser als nur Python.
  2. Leite Ausgaben Um, Um Spam-Mails Zu Vermeiden: Standardmäßig sendet Cron jegliche Ausgaben per E-Mail an den Benutzer. Füge >/dev/null 2>&1 hinzu, um die Ausgabe zu unterdrücken oder stattdessen in eine Log-Datei umzuleiten.
  3. Teste Deine Befehle, Bevor Du Sie Planst: Führe deinen Befehl manuell aus, um sicherzustellen, dass er wie erwartet funktioniert.

Füge Kommentare hinzu, um jeden Cron Job zu erklären — Dein zukünftiges Ich wird Deinem jetzigen Ich dafür danken, dass es dokumentiert hat, was jeder Cron Job macht und warum.

Tägliche Datenbanksicherung - Hinzugefügt von Jane am 2023-05-15
0 1 * * * /pfad/zum/sicherungsskript.sh

Erwäge die Verwendung von Sperrdateien für langlaufende Jobs, um zu verhindern, dass eine neue Instanz startet, wenn die vorherige noch läuft.

0 * * * * flock -n /tmp/script.lock /path/to/your/script.sh

Die Don’ts

  1. Plane keine ressourcenintensiven Aufgaben während der Stoßzeiten: Dein Backup muss nicht um zwölf Uhr mittags laufen, wenn deine Website am meisten frequentiert ist.
  2. Verwende keine relativen Pfade: “./script.sh” wird in einem Cron Job fast sicher fehlschlagen.
  3. Vergiss Umgebungsvariablen nicht: Cron lädt deine .bashrc oder .profile nicht. Setze alle erforderlichen Variablen in der Crontab oder im Skript.
  4. Übersehe kein Logging: Ohne angemessenes Logging kann das Debuggen von Cron Jobs zum Albtraum werden.
  5. Übertreibe es nicht: Zu viele häufige Cron Jobs können deinen Server überlasten. Sei strategisch.

Was Tun, Wenn Cron Jobs Fehlschlagen

Der einzige Zeitpunkt, zu dem Du auf einen Cron Job zurückblicken musst, ist, wenn er ausfällt — und wenn er ausfällt, findest Du hier, wie Du häufige Probleme diagnostizierst und behebst.

Häufiges Problem #1: Der Job Wird Nicht Ausgeführt

Symptome: Dein geplanter Task scheint überhaupt nicht ausgeführt zu werden.

Mögliche Lösungen:

  • Überprüfe, ob der Cron-Daemon läuft: Der “systemctl”-Status von Cron
  • Überprüfe deine Crontab-Syntax: Nutze ein Tool wie crontab.guru
  • Stelle sicher, dass die Pfade zu den ausführbaren Dateien vollständig sind: Welcher Befehl, um vollständige Pfade zu finden
  • Überprüfe die Dateiberechtigungen: Skripte müssen ausführbar sein (chmod +x script.sh)

Häufiges Problem #2: Job Wird Ausgeführt, Aber Scheitert

Symptome: Der Auftrag wird ausgeführt, aber er schließt seine Aufgabe nicht erfolgreich ab.

Mögliche Lösungen:

  • Leite Ausgaben in eine Protokolldatei um, um Fehler zu sehen: * * * * /path/to/script.sh > /path/to/script.log 2>&1
  • Teste den Befehl manuell mit derselben Umgebung
  • Prüfe auf fehlende Abhängigkeiten in der Cron-Umgebung

Häufiges Problem #3: E-Mail-Flut

Symptome: Dein Postfach ist mit Cron-Ausgabe-E-Mails überflutet.

Mögliche Lösungen:

  • Ausgabe nach null umleiten: >/dev/null 2>&1
  • In eine Log-Datei umleiten: >/path/to/logfile.log 2>&1

Nur E-Mail bei Fehlern:

* * * * /path/to/script.sh >/dev/null || echo "Skript fehlgeschlagen" | mail -s "Cron Fehlschlag" you@example.com

Häufiges Problem #4: Zeitliche Probleme

Symptome: Jobs laufen zu unerwarteten Zeiten oder in unerwarteten Häufigkeiten.

Mögliche Lösungen:

  • Überprüfe Deine Zeitzonen-Einstellungen — Datum vs. die Erwartung des Cron Job
  • Beachte die DST-Änderungen, die das Timing beeinflussen könnten
  • Verwende explizite Zeitrahmen statt relativer, wenn Genauigkeit wichtig ist

Fortgeschrittene Techniken Zum Schreiben Von Cron Jobs

Wir haben uns die Grundlagen angesehen, und Du bist jetzt ziemlich routiniert mit Cron Jobs. Aber dieser Abschnitt wird Dich einen Schritt weiter bringen.

Verwendung Spezieller Zeichenfolgen

Du musst nicht immer Cron Jobs mit diesen Sternchenzeichen schreiben. Es gibt einige spezielle Zeichenfolgen, die es Dir erlauben, Cron Jobs ganz einfach einzurichten.

  • @yearly oder @annually: Einmal im Jahr ausführen (0 0 1 1 *)
  • @monthly: Einmal im Monat ausführen (0 0 1 * *)
  • @weekly: Einmal in der Woche ausführen (0 0 * * 0)
  • @daily oder @midnight: Einmal am Tag ausführen (0 0 * * *)
  • @hourly: Einmal in der Stunde ausführen (0 * * * *)
  • @reboot: Einmal beim Start ausführen

Zum Beispiel, wenn Du möchtest, dass etwas täglich ausgeführt wird, schreibe einfach den folgenden Befehl:

@daily /path/to/daily-backup.sh

Umgebungsvariablen in Crontab

Um die Wiederholung einer Zeichenfolge in deinen Cron Jobs zu vermeiden (zum Beispiel einen bestimmten Pfad oder deine Admin-E-Mail), richte zu Beginn deines Crontab Umgebungsvariablen ein. 

Du kannst dann die Variablen bei Bedarf in deinen Skripten oder Befehlen wiederverwenden.

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=admin@example.com

# Dieser Job wird Fehler an admin@example.com senden
0 2 * * * /path/to/mailing_script.sh

Wenn wir die Umgebungsvariable MAILTO in unserem mailing_script.sh verwenden, wird das Skript automatisch eine E-Mail an die richtige E-Mail-Adresse senden.

Mit diesem Vorgehen benötigst Du nur den Wert der MAILTO-Variablen zu ändern, anstatt Änderungen in allen Skripten vorzunehmen.

Jobs Als Verschiedene Benutzer Ausführen

Wenn du Superuser-Zugriff hast, kannst du die Crontab eines anderen Benutzers bearbeiten:

sudo crontab -u username -e

Anacron nutzen für Maschinen, die nicht immer eingeschaltet sind

Im Gegensatz zu Cron stellt Anacron sicher, dass Jobs ausgeführt werden, auch wenn der Computer zum geplanten Zeitpunkt ausgeschaltet war:

sudo apt install anacron

Bearbeite /etc/anacrontab, um Jobs hinzuzufügen, die ausgeführt werden, wenn das System wieder online ist.

Job-Verkettung für komplexe Arbeitsabläufe

Führe Jobs nacheinander aus:

0 1 * * * /path/to/first-script.sh && /path/to/second-script.sh

Überwachung Von Cron Jobs 

Für ernsthaftes Server-Management solltest Du Tools wie Cronitor in Betracht ziehen, die Überwachung und Benachrichtigungen für Deine Cron Jobs bieten.

0 * * * * cronitor exec check-12345 -- /path/to/your/script.sh

Lass Uns Über Kosten Sprechen

Cron Jobs können nicht isoliert existieren. Sie benötigen einen Server und einen Dienst, der auf einem Server läuft, den Du verwalten musst. 

Wenn Du diesen Artikel liest, ist es sehr wahrscheinlich, dass Du einen Server für Deine Website oder Anwendung hast. 

Tatsächlich, wenn Du bei DreamHost VPS oder einem Linux-basierten Hosting-Anbieter hostest, hast Du bereits alles, was Du brauchst, um mit der Automatisierung Deiner Serververwaltungsaufgaben zu beginnen. 

Wenn nicht, reicht ein $10/Monat VPS, besonders zu Beginn. 

Für diejenigen, die bereits einen DreamHost VPS betreiben, könnte der Prozess nicht einfacher sein:

  1. SSH in deinen Server
  2. Führe crontab -e aus, um deine persönliche Cron-Tabelle zu bearbeiten
  3. Füge deine geplanten Aufgaben hinzu
  4. Speichern und die Automatisierung beginnen lassen!
DreamHost-Glossar

SSH

Secure Shell Protocol (SSH) ist ein kryptografisches Netzwerkprotokoll, das dazu dient, Dienste sicher über ein unsicheres Netzwerk auszuführen. Es wird hauptsächlich für Befehlszeilenausführungen und Fernanmeldungen verwendet.

Mehr Lesen

Das ist es. Die Infrastruktur, für die Du bereits zahlst, wird plötzlich wertvoller, effizienter.

Der Neue Autopilot Deines Servers

Herzlichen Glückwunsch! 

Du hast Dich vom manuellen Arbeiten zum Automatisierungs-Magier entwickelt. Mit Cron Jobs, die die routinemäßige Wartung, Backups und Überwachung übernehmen, kannst Du Dich auf das Wachstum Deiner Website und Deines Geschäfts konzentrieren, statt den Server zu betreuen.

Und denke daran, es wird ein Prozess sein. Die Automatisierung wird immer ausgefeilter, je mehr Aufgaben Du hinzufügst. 

Aber beginne zunächst mit einigen grundlegenden Cron Jobs, überwache, wie sie funktionieren, und erweitere deine Automatisierung schrittweise, wenn du dich mit dem Prozess wohler fühlst.

Jetzt mach weiter und gönne dir ein Nickerchen, denn du hast dir gerade eine Menge Zeit gespart.

Erhalten Sie Inhalte direkt in Ihren Posteingang

Abonnieren Sie jetzt, um alle neuesten Updates direkt in Ihren Posteingang zu erhalten.