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:
- Voraussetzungen installieren: Sicherstellen, dass das Dienstprogramm
atinstalliert ist und der zugehörige Daemon läuft. - Einen Job planen: Mit
ateinen Befehl zur späteren Ausführung in die Warteschlange stellen. - Die Warteschlange prüfen: Mit
atqausstehende Jobs auflisten. - Jobs verwalten: Mit
atrmeinen 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.
- Installieren Sie das Paket:
sudo apt-get install -y at
- Das
at-System verwendet einen Hintergrund-Daemon namensatd, um die geplanten Befehle auszuführen. Starten Sie den Dienst:
sudo service atd start
- 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:
- Installation:
atundatdeinrichten. - Planung (
at): Eine Syntax wieat now + 5 minutesverwenden, um zukünftige Befehle in die Warteschlange zu stellen. - Auflistung (
atq): Die Warteschlange prüfen, um ausstehende Job-IDs und Ausführungszeitpunkte anzuzeigen. - 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.



