Linux-Aufgabenplanung

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Willkommen im Linux-Job-Scheduling-Labor (Linux 作业调度实验室). In dieser Sitzung werden Sie lernen, wie Sie wiederholende Aufgaben in Linux mit dem crontab-Tool automatisieren können. crontab ist ein zeitbasierter Job-Scheduler in Unix-ähnlichen Betriebssystemen.

Das Planen von Aufgaben ist eine grundlegende Fähigkeit für Systemadministratoren und Entwickler. Durch die Automatisierung von Routinetätigkeiten können Sie die Effizienz steigern, die Zuverlässigkeit gewährleisten und die manuelle Intervention reduzieren. Mit dem crontab-Tool können Sie Befehle so planen, dass sie in festgelegten Intervallen, von Minuten bis Monaten, ausgeführt werden.

Im Laufe dieses Labs werden Sie lernen, geplante Aufgaben mit crontab zu erstellen, zu verwalten und zu überwachen. Am Ende werden Sie in der Lage sein, automatisierte Aufgabenplanung in Ihrer eigenen Linux-Umgebung umzusetzen.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 100% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Grundlagen von Crontab und Erstellung Ihrer ersten geplanten Aufgabe

Crontab (Cron-Tabelle) ist ein Tool in Linux, das es Benutzern ermöglicht, Aufgaben zu planen, die zu bestimmten Zeiten automatisch ausgeführt werden. Diese geplanten Aufgaben werden "Cron-Jobs" genannt.

Crontab-Syntax

Die grundlegende Syntax eines Cron-Jobs folgt diesem Format:

* * * * * command_to_execute

Jedes Sternchen steht für eine andere Zeiteinheit:

  1. Minute (0-59)
  2. Stunde (0-23)
  3. Tag des Monats (1-31)
  4. Monat (1-12)
  5. Wochentag (0-6, wobei 0 Sonntag ist)

Beispielsweise würden Sie folgenden Eintrag verwenden, um einen Befehl jeden Tag um 14:30 Uhr auszuführen:

30 14 * * * command_to_execute

Erstellung Ihres ersten Cron-Jobs

Erstellen wir nun einen einfachen Cron-Job, der die aktuelle Datum und Uhrzeit jede Minute aufzeichnet. Dies wird Ihnen helfen, zu verstehen, wie Cron-Jobs funktionieren.

Stellen Sie zunächst sicher, dass Sie sich im richtigen Verzeichnis befinden:

cd ~/project

Erstellen wir nun eine leere Protokolldatei, in die unser Cron-Job das Datum und die Uhrzeit schreiben wird:

touch ~/project/date_log.txt

Öffnen Sie als Nächstes den Crontab-Editor mit folgendem Befehl:

crontab -e

Wenn Sie Crontab zum ersten Mal verwenden, werden Sie möglicherweise aufgefordert, einen Editor auszuwählen. Wählen Sie Ihre bevorzugte Option (für Anfänger wird nano empfohlen).

Fügen Sie im Editor am Ende der Datei die folgende Zeile hinzu:

* * * * * date >> ~/project/date_log.txt

Speichern Sie die Datei und verlassen Sie den Editor:

  • Wenn Sie nano verwenden, drücken Sie Ctrl+O, um zu speichern, dann Enter, um zu bestätigen, und schließlich Ctrl+X, um zu verlassen.
  • Wenn Sie vim verwenden, drücken Sie Esc, geben Sie dann :wq ein und drücken Sie Enter.

Dieser Cron-Job fügt die aktuelle Datum und Uhrzeit jede Minute zur Datei date_log.txt hinzu. Warten Sie mindestens eine Minute und überprüfen Sie dann, ob Ihr Cron-Job funktioniert:

cat ~/project/date_log.txt

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

Tue Feb 15 14:32:01 UTC 2023

Wenn Sie länger warten und den Befehl erneut ausführen, sollten Sie mehrere Einträge mit Zeitstempeln in Abständen von etwa einer Minute sehen, was bestätigt, dass Ihr Cron-Job korrekt ausgeführt wird.

Verwaltung und Änderung von Cron-Jobs

Nachdem Sie Ihren ersten Cron-Job erstellt haben, lernen wir nun, wie Sie Ihre geplanten Aufgaben anzeigen, ändern und verwalten können.

Anzeigen aktueller Cron-Jobs

Um Ihre aktuellen Cron-Jobs anzuzeigen, verwenden Sie folgenden Befehl:

crontab -l

Dieser Befehl zeigt alle Cron-Jobs an, die derzeit für Ihren Benutzer geplant sind. Sie sollten den Job sehen, den Sie im vorherigen Schritt erstellt haben:

* * * * * date >> ~/project/date_log.txt

Grundlagen zu Cron-Job-Planungsmustern

Bevor wir unseren Job ändern, schauen wir uns einige gängige Planungsmuster an:

  • * * * * * - Jede Minute ausführen
  • */5 * * * * - Alle 5 Minuten ausführen
  • 0 * * * * - Am Anfang jeder Stunde ausführen
  • 0 0 * * * - Jeden Tag um Mitternacht ausführen
  • 0 0 * * 0 - Jeden Sonntag um Mitternacht ausführen

Ändern eines Cron-Jobs

Ändern wir den bestehenden Cron-Job so, dass er alle 5 Minuten anstatt jeder Minute ausgeführt wird. Dazu öffnen Sie den Crontab-Editor:

crontab -e

Suchen Sie die Zeile, die Sie im vorherigen Schritt hinzugefügt haben:

* * * * * date >> ~/project/date_log.txt

Ändern Sie sie in:

*/5 * * * * date >> ~/project/date_log.txt

Das */5 in der ersten Position bedeutet "alle 5 Minuten". Speichern Sie die Datei und verlassen Sie den Editor wie zuvor (Ctrl+O, Enter, Ctrl+X für nano).

Um die Änderungen zu überprüfen, zeigen Sie Ihre Crontab erneut an:

crontab -l

Sie sollten den aktualisierten Cron-Job sehen. Die Ausgabe sollte wie folgt aussehen:

*/5 * * * * date >> ~/project/date_log.txt

Wenn Sie nach 5 Minuten erneut in Ihre Protokolldatei schauen:

cat ~/project/date_log.txt

Sollten Sie bemerken, dass nun alle 5 Minuten anstatt jeder Minute neue Einträge hinzugefügt werden.

Vorteile der Änderung der Job-Frequenz

Das Ausführen von Jobs in angemessenen Intervallen hilft, die Systemressourcen zu optimieren. Sehr häufige Jobs (z.B. jede Minute) können eine unnötige Systemlast verursachen, während weniger häufige Zeitpläne (z.B. alle 5 Minuten) oft ein besseres Gleichgewicht zwischen Aktualität und Effizienz für Überwachungsaufgaben bieten.

Erstellung fortgeschrittenerer Cron-Jobs

Nachdem Sie die Grundlagen verstanden haben, erstellen wir nun einen fortgeschritteneren Cron-Job, der Systeminformationen protokolliert.

Erstellung eines Jobs zur Protokollierung von Systeminformationen

Erstellen wir einen Cron-Job, der die Informationen über die Speicherauslastung des Systems stündlich protokolliert. Diese Art der Überwachung kann nützlich sein, um die Systemleistung im Laufe der Zeit zu verfolgen.

Zunächst erstellen wir ein Shell-Skript, das die Speicherinformationen sammelt:

nano ~/project/memory_check.sh

Fügen Sie im nano-Editor folgenden Inhalt hinzu:

#!/bin/bash
echo "Memory check at $(date)" >> ~/project/memory_log.txt
free -m >> ~/project/memory_log.txt
echo "--------------------" >> ~/project/memory_log.txt

Dieses Skript wird:

  1. Einen Zeitstempel in das Protokoll einfügen
  2. Den Befehl free -m ausführen, um die Speicherauslastung in Megabyte anzuzeigen
  3. Eine Trennlinie für bessere Lesbarkeit hinzufügen

Speichern Sie die Datei und verlassen Sie den Editor (drücken Sie Ctrl+O, Enter, dann Ctrl+X).

Machen Sie nun das Skript ausführbar:

chmod +x ~/project/memory_check.sh

Sie können das Skript testen, um sicherzustellen, dass es korrekt funktioniert:

~/project/memory_check.sh

Überprüfen Sie die Ausgabedatei:

cat ~/project/memory_log.txt

Sie sollten eine Ausgabe sehen, die den Zeitstempel, die Speicherauslastungsinformationen und eine Trennlinie enthält.

Planen wir nun, dass dieses Skript stündlich mit Crontab ausgeführt wird:

crontab -e

Fügen Sie die folgende Zeile hinzu (behalten Sie dabei Ihren bestehenden Cron-Job):

0 * * * * ~/project/memory_check.sh

Dies führt das Skript zur Speicherüberprüfung am Anfang jeder Stunde aus. Speichern Sie die Datei und verlassen Sie den Editor.

Um zu überprüfen, ob der neue Cron-Job hinzugefügt wurde:

crontab -l

Sie sollten beide Cron-Jobs sehen:

*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh

Verwendung spezieller Zeitangaben

Cron unterstützt auch einige spezielle Zeitangaben für häufige Planungsmuster:

  • @hourly - Entspricht 0 * * * *
  • @daily - Entspricht 0 0 * * *
  • @weekly - Entspricht 0 0 * * 0
  • @monthly - Entspricht 0 0 1 * *
  • @reboot - Wird beim Systemstart ausgeführt

Fügen wir einen Job hinzu, der täglich mit diesen speziellen Zeitangaben ausgeführt wird:

crontab -e

Fügen Sie die folgende Zeile hinzu:

@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt

Speichern Sie die Datei und verlassen Sie den Editor. Dies erstellt einmal pro Tag um Mitternacht einen neuen Eintrag in der Datei daily_check.txt.

Um zu überprüfen, ob der neue Cron-Job hinzugefügt wurde:

crontab -l

Sie sollten nun alle drei Cron-Jobs sehen:

*/5 * * * * date >> ~/project/date_log.txt
0 * * * * ~/project/memory_check.sh
@daily echo "Daily check on $(date)" >> ~/project/daily_check.txt

Verwaltung der Cron-Job-Ausgabe

Standardmäßig sendet Cron alle Ausgaben von Jobs an die E-Mail des Benutzers. Wenn Sie die Ausgabe vollständig verwerfen möchten, können Sie sie auf /dev/null umleiten:

*/10 * * * * ~/project/some_script.sh > /dev/null 2>&1

Dies ist eine gängige Praxis für Skripte, deren Ausgabe Sie nicht behalten müssen.

Zusammenfassung

Herzlichen Glückwunsch, dass Sie das Linux-Job-Planungs-Lab abgeschlossen haben. Sie haben nun gelernt, wie Sie das crontab-Werkzeug verwenden können, um Aufgaben in Linux zu automatisieren.

Im Laufe dieses Labs haben Sie Folgendes erreicht:

  • Erstellt einen einfachen Cron-Job, um Datum und Uhrzeit in regelmäßigen Abständen zu protokollieren
  • Die Crontab-Syntax und die Bedeutung der Zeitfelder (Minute, Stunde, Tag, Monat, Wochentag) gelernt
  • Bestehende Cron-Jobs geändert, um ihre Ausführungsfrequenz zu verändern
  • Ein Shell-Skript für die Systemüberwachung erstellt und es so geplant, dass es stündlich ausgeführt wird
  • Spezielle Zeitangaben wie @daily für häufige Planungsmuster verwendet
  • Gelernt, wie man die Ausgabe von Cron-Jobs verwaltet

Diese Fähigkeiten sind für jeden Linux-Benutzer oder Systemadministrator unerlässlich. Mit Crontab können Sie routinemäßige Aufgaben automatisieren, wie z. B.:

  • Systemwartung und -bereinigung
  • Datensicherung und -synchronisierung
  • Protokollrotation und -verwaltung
  • Regelmäßige Systemüberprüfungen und -überwachung
  • Geplante Berichterstellung

Durch die effektive Planung von Jobs können Sie die Systemzuverlässigkeit erhöhen, die manuelle Intervention reduzieren und Ihren Arbeitsablauf optimieren. Denken Sie immer daran, Ihre Cron-Jobs gründlich zu testen und die Auswirkungen der geplanten Aufgaben auf die Systemleistung zu berücksichtigen.

Setzen Sie die Erkundung der Möglichkeiten von Crontab und anderer Linux-Planungstools fort, um Ihre Automatisierungsfähigkeiten weiter zu verbessern.