at ist ein Befehlszeilendienstprogramm, mit dem Sie die Ausführung von Befehlen zu einem bestimmten Zeitpunkt planen können. Jobs erstellt mit at werden nur einmal ausgeführt.
In diesem Artikel erklären wir, wie man at verwendet und die dazugehörigen Dienstprogramme batch , atq , atrm zum Anzeigen, Löschen und Erstellen von Jobs, die zu einem späteren Zeitpunkt ausgeführt werden sollen.
Installation von at #
Je nach Distribution at kann auf Ihrem Linux-System vorhanden sein oder nicht.
Wenn at nicht installiert ist, können Sie es einfach mit dem Paketmanager Ihrer Distribution installieren.
-
Installieren Sie
atauf Ubuntu und Debiansudo apt updatesudo apt install at -
Installieren Sie
atauf CentOS und Fedorasudo yum install at
Stellen Sie nach der Installation des Programms sicher, dass atd , der Scheduling-Daemon läuft und ist so eingestellt, dass er beim Booten startet:
sudo systemctl enable --now atd Verwendung des at Befehl #
Die vereinfachte Syntax für at Befehl lautet wie folgt:
at [OPTION...] runtime
Der at Befehl übernimmt das Datum und die Uhrzeit (runtime ), wenn Sie den Job als Befehlszeilenparameter ausführen möchten, und den auszuführenden Befehl von der Standardeingabe.
Lassen Sie uns einen Job erstellen, der um 9:00 Uhr ausgeführt wird:
at 09:00
Sobald Sie Enter gedrückt haben , wird Ihnen der at angezeigt Eingabeaufforderung, die meistens mit at> beginnt . Sie sehen auch eine Warnung, die Ihnen mitteilt, in welcher Shell der Befehl ausgeführt wird:
warning: commands will be executed using /bin/sh
at>
Geben Sie einen oder mehrere auszuführende Befehle ein:
tar -xf /home/linuxize/file.tar.gz
Wenn Sie mit der Eingabe der Befehle fertig sind, drücken Sie Ctrl-D um die Eingabeaufforderung zu verlassen und den Job zu speichern:
at> <EOT>
job 4 at Tue May 5 09:00:00 2020
Der Befehl zeigt die Jobnummer sowie Ausführungszeit und -datum an.
Neben der Eingabe des Befehls in at gibt es auch andere Möglichkeiten, den auszuführenden Befehl zu übergeben prompt. Eine Möglichkeit ist die Verwendung von echo und leiten Sie den Befehl an at weiter :
echo "command_to_be_run" | at 09:00 Eine weitere Option ist die Verwendung von Here document:
at 09:00 <<ENDcommand_to_be_runEND
Um die Befehle aus einer Datei statt aus der Standardeingabe zu lesen, rufen Sie den Befehl mit -f auf Option gefolgt vom Pfad zur Datei. Zum Beispiel, um einen Job zu erstellen, der das Skript /home/linuxize/script.sh ausführt :
at 09:00 -f /home/linuxize/script.sh
Wenn der Befehl eine Ausgabe erzeugt, ist standardmäßig at sendet eine E-Mail mit der Ausgabe an den Benutzer, sobald der Auftrag abgeschlossen ist. Rufen Sie at auf mit dem -M Option zum Unterdrücken der E-Mail-Benachrichtigung:
at 09:00 -M
Verwenden Sie das -m um eine E-Mail zu senden, auch wenn es keine Ausgabe gibt:
at 09:00 -m batch Befehl #
batch oder sein Alias at -b plant Jobs und führt sie in einer Stapelwarteschlange aus, wenn die Systemlast dies zulässt. Standardmäßig werden die Jobs ausgeführt, wenn die durchschnittliche Systemlast unter 1,5 liegt. Der Wert der Last kann beim Aufruf von atd angegeben werden Dämon. Wenn die durchschnittliche Systemlast höher ist als angegeben, warten die Jobs in der Warteschlange.
So erstellen Sie einen Job mit batch , übergeben Sie die auszuführenden Befehle:
echo "command_to_be_run" | batch Angabe der Ausführungszeit #
Der at Das Dienstprogramm akzeptiert eine Vielzahl von Zeitangaben. Sie können Zeit, Datum und Inkrement von der aktuellen Zeit angeben:
-
Zeit - Um eine Zeit anzugeben, verwenden Sie den
HH:MModerHHMMform. Um ein 12-Stunden-Zeitformat anzugeben, verwenden Sieamoderpmnach der Zeit. Sie können auch Zeichenfolgen wienowverwenden ,midnight,noon, oderteatime(16:00). Wenn die angegebene Zeit verstrichen ist, wird der Job am nächsten Tag ausgeführt. -
Datum - Mit dem Befehl können Sie die Auftragsausführung an einem bestimmten Datum planen. Das Datum kann mit dem Monatsnamen gefolgt vom Tag und einem optionalen Jahr angegeben werden. Sie können Zeichenfolgen wie
todayverwenden ,tomorrow, oder Wochentag. Das Datum kann auch mit demMMDD[CC]YYangegeben werden ,MM/DD/[CC]YY,DD.MM.[CC]YYoder[CC]YY-MM-DDFormate. -
Erhöhen -
atakzeptiert auch Inkremente in dernow + count time-unitFormat, wobeicountist eine Zahl undtime-unitkann einer der folgenden Strings sein:minutes,hours,days, oderweeks.
Zeit, Datum und Inkrement können kombiniert werden, hier einige Beispiele:
-
Planen Sie einen Job für den kommenden Sonntag um zehn Minuten später als die aktuelle Zeit:
at sunday +10 minutes -
Planen Sie einen Job so, dass er in zwei Tagen um 13:00 Uhr ausgeführt wird:
at 1pm + 2 days -
Planen Sie einen Job, der am 21. Oktober 2020 um 12:30 Uhr ausgeführt werden soll:
at 12:30 102120 -
Planen Sie einen Job so, dass er in einer Stunde von jetzt an ausgeführt wird:
at now +1 hours
Sie können auch eine Uhrzeit und ein Datum im [[CC]YY]MMDDhhmm[.ss] angeben mit dem -t Möglichkeit. Hier ist ein Beispiel:
at -t 202005111321.32 Angeben der Warteschlange Nr.
Standardmäßig werden die Jobs mit at erstellt werden in der Warteschlange namens a eingeplant und mit batch erstellte Jobs sind im b eingeplant Warteschlange.
Abfragen können einen Namen von a haben bis z und A bis Z . Warteschlangen mit niedrigeren Buchstaben laufen mit geringerer Nettigkeit, was bedeutet, dass sie Vorrang vor denen mit höheren Buchstaben haben.
Sie können die Warteschlange mit dem -q angeben Möglichkeit. Zum Beispiel, um einen Job im L einzustellen Warteschlange, würden Sie Folgendes ausführen:
at monday +2 hours -q L Ausstehende Jobs auflisten #
Um die ausstehenden Jobs des Benutzers aufzulisten, führen Sie atq aus oder at -l Befehl:
atq Die Ausgabe listet alle Jobs auf, einen pro Zeile. Jede Zeile enthält die Auftragsnummer, das Datum, die Uhrzeit, den Buchstaben der Warteschlange und den Benutzernamen.
9 Tue May 5 12:22:00 2020 a linuxize
12 Wed Oct 21 12:30:00 2020 a linuxize
15 Tue May 5 09:00:00 2020 a linuxize
6 Tue May 5 09:00:00 2020 a linuxize
13 Mon May 4 23:08:00 2020 a linuxize
11 Wed Jul 1 10:00:00 2020 a linuxize
4 Tue May 5 09:00:00 2020 a linuxize
Wenn atq als Administrator aufgerufen wird, listet es die ausstehenden Jobs aller Benutzer auf.
Ausstehende Jobs entfernen #
Um einen ausstehenden Job zu entfernen, rufen Sie atrm auf oder at -r Befehl gefolgt von der Auftragsnummer. Um beispielsweise den Job mit der Nummer neun zu entfernen, würden Sie Folgendes ausführen:
atrm 9 Benutzer einschränken #
Der /etc/at.deny und /etc/at.allow Mit Dateien können Sie steuern, welche Benutzer Jobs mit at erstellen können oder batch Befehl. Die Dateien bestehen aus einer Liste von Benutzernamen, ein Benutzername pro Zeile.
Standardmäßig nur die /etc/at.deny Datei existiert und ist leer, was bedeutet, dass alle Benutzer den at verwenden können Befehl. Wenn Sie einem bestimmten Benutzer die Berechtigung verweigern möchten, fügen Sie den Benutzernamen zu dieser Datei hinzu.
Wenn die /etc/at.allow Datei existiert, nur die Benutzer, die in dieser Datei aufgeführt sind, können den at verwenden Befehl.
Wenn keine der Dateien vorhanden ist, können nur Benutzer mit Administratorrechten at verwenden Befehl.
Schlussfolgerung #
Der at Dienstprogramm liest Befehle von der Standardeingabe und führt sie zu einem späteren Zeitpunkt aus. Im Gegensatz zu crontab werden Jobs mit at erstellt werden nur einmal ausgeführt.
Weitere Informationen zu allen verfügbaren Optionen des at Geben Sie den Befehl man at ein in Ihrem Terminal.
Wenn Sie Fragen haben, können Sie gerne einen Kommentar hinterlassen.