Einmalige Aufgabenplanung mit at

LinuxBeginner
Jetzt üben

Einführung

Während cron ideal für wiederkehrende Aufgaben ist, etwa tägliche oder stündliche Jobs, müssen Sie manchmal eine Aufgabe zu einem bestimmten zukünftigen Zeitpunkt nur einmal ausführen. Beispielsweise möchten Sie vielleicht heute Nacht um 2:00 Uhr einen Dienst neu starten oder in 30 Minuten einen Datenbank-Snapshot erstellen.

Für solche einmaligen Aufgaben stellt Linux das Dienstprogramm at bereit.

Der Befehl at liest Befehle aus der Standardeingabe oder aus einer Datei und führt sie zu einem späteren Zeitpunkt aus. Das ist nützlich, wenn eine Aufgabe verzögert, aber nicht wiederholt ausgeführt werden soll. Darin unterscheidet sich at vom wiederkehrenden Zeitplanmodell von cron.

Der wichtigste konzeptionelle Unterschied ist daher einfach: cron beschreibt wiederkehrende Zeitpläne, während at einen einmaligen Job für einen zukünftigen Zeitpunkt in die Warteschlange stellt. Beide Werkzeuge dienen der Automatisierung, lösen aber unterschiedliche Zeitplanungsprobleme.

In diesem Lab werden Sie:

  1. Voraussetzungen installieren: Sicherstellen, dass das Dienstprogramm at installiert ist und der zugehörige Daemon läuft.
  2. Einen Job planen: Mit at einen Befehl zur späteren Ausführung in die Warteschlange stellen.
  3. Die Warteschlange prüfen: Mit atq ausstehende Jobs auflisten.
  4. Jobs verwalten: Mit atrm einen Job aus der Warteschlange entfernen.

Das Dienstprogramm at installieren

Der Befehl at ist nicht in allen Linux-Distributionen standardmäßig installiert. Prüfen Sie zuerst, ob das Dienstprogramm vorhanden ist und der Hintergrunddienst läuft.

Wie cron ist auch at von einem Daemon abhängig. Der von Ihnen eingegebene Befehl erstellt eine Definition für einen Job in der Warteschlange. Der Hintergrunddienst führt diesen Job später tatsächlich aus.

  1. Installieren Sie das Paket:
sudo apt-get install -y at
  1. Das at-System verwendet einen Hintergrund-Daemon namens atd, um die geplanten Befehle auszuführen. Starten Sie den Dienst:
sudo service atd start
  1. Prüfen Sie, ob der Dienst aktiv ist:
sudo service atd status

In der Ausgabe sollte erkennbar sein, dass atd läuft.

Einen Job planen

Nachdem das System vorbereitet ist, prüfen Sie die Funktion von at, indem Sie eine einfache Aufgabe planen, die in 5 Minuten eine Datei erstellt.

Führen Sie zunächst den Befehl at gefolgt vom gewünschten Zeitpunkt aus:

at now + 5 minutes

Die Eingabeaufforderung wechselt zu at>. Das zeigt an, dass at auf Ihre Eingabe wartet. Geben Sie den auszuführenden Befehl ein:

Diese Oberfläche unterscheidet sich von cron, da at den Befehlstext des zukünftigen Jobs interaktiv entgegennimmt. Sie schreiben dabei praktisch den Inhalt einer einmaligen Aufgabe und übergeben ihn an die Warteschlange.

echo "Hello LabEx" > /home/labex/project/hello.txt

Speichern und beenden:

  • Drücken Sie Ctrl + D.

Sie sollten <EOT> (End of Transmission) sowie eine Bestätigung wie job 1 at ... sehen.

Damit wurde bestätigt, dass Ihr Job an die Warteschlange übergeben wurde.

Ausstehende Jobs auflisten (atq)

Nachdem Sie einen Job geplant haben, möchten Sie möglicherweise prüfen, ob er sich in der Warteschlange befindet, oder seine Job-ID ermitteln.

Mit dem Befehl atq listen Sie die Warteschlange auf:

atq

Das Ausgabeformat sieht typischerweise so aus: 1 Mon Oct 23 10:05:00 2023 a labex

Aufschlüsselung:

  • 1: Die Job-ID. Sie benötigen diese Nummer, um den Job zu entfernen.
  • Datum/Uhrzeit: Der Zeitpunkt, zu dem der Job ausgeführt werden soll.
  • Benutzer: Der Benutzer, dem der Job gehört.

Die Ansicht der Warteschlange ist wichtig, da geplante Aufgaben nach ihrer Übermittlung leicht in Vergessenheit geraten. Mit atq können Sie ausstehende Aufgaben prüfen, bevor sie ausgeführt werden.

Wenn die Warteschlange leer ist, wurde der Job möglicherweise bereits ausgeführt oder nicht erfolgreich übermittelt.

Einen Job abbrechen (atrm)

Wenn Sie Ihre Meinung ändern oder einen Fehler bemerken, können Sie einen Job vor seiner Ausführung aus der Warteschlange entfernen.

Verwenden Sie den Befehl atrm gefolgt von der Job-ID.

Ermitteln Sie zuerst mit atq die Job-ID. Im vorherigen Schritt war sie wahrscheinlich 1. Führen Sie anschließend den folgenden Befehl aus:

atrm 1

Prüfen Sie nun, ob die Warteschlange leer ist:

atq

Die Ausgabe sollte leer bleiben. Das bestätigt, dass der Job abgebrochen wurde. Es wird keine Datei erstellt.

Dieser Abbruchschritt verdeutlicht, dass Jobs in der Warteschlange verwaltbare Objekte sind und nicht einfach nur Befehle, die ohne weitere Kontrolle gestartet werden. Sie können die Jobs prüfen, anhand ihrer ID identifizieren und vor der Ausführung entfernen, wenn sich Ihr Plan ändert.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie einmalige Aufgaben verwalten:

  1. Installation: at und atd einrichten.
  2. Planung (at): Eine Syntax wie at now + 5 minutes verwenden, um zukünftige Befehle in die Warteschlange zu stellen.
  3. Auflistung (atq): Die Warteschlange prüfen, um ausstehende Job-IDs und Ausführungszeitpunkte anzuzeigen.
  4. Entfernung (atrm): Bestimmte Jobs anhand ihrer ID aus der Warteschlange löschen.

Verwenden Sie cron für wiederkehrende Zeitpläne und at für einmalige, verzögerte Ausführungen.