Einführung
Der at
command ist ein Linux-Befehlszeilendienstprogramm, das verwendet wird, um einen Job für die spätere Ausführung zu planen. Das Dienstprogramm liest Befehle aus der Standardeingabe und gruppiert sie in einem at
Job, der nur einmal ausgeführt wird.
Die Alternative für at
ist ein Cronjob. Während jedoch at
Jobs werden nur einmal ausgeführt, Cron-Jobs sind wiederkehrende Ereignisse.
In diesem Tutorial lernen Sie, den at
zu verwenden Befehl und sehen Sie sich nützliche Beispiele für die Befehlsplanung an.
Voraussetzungen
- Ein System, auf dem Linux ausgeführt wird.
- Ein Benutzerkonto mit sudo-Berechtigungen.
Installieren Sie den at-Befehl
Je nachdem, welche Linux-Distribution Sie verwenden, wird die Datei at
Befehl möglicherweise nicht vorinstalliert.
Prüfen Sie, ob at
wird durch Eingabe des Befehlsnamens im Terminal installiert:
Wenn das Dienstprogramm nicht vorinstalliert ist, lautet die Ausgabenachricht Befehl 'at' nicht gefunden .
Installieren Sie unter Ubuntu und Debian
Führen Sie die folgenden Schritte aus, um at
zu installieren unter Ubuntu oder Debian:
1. Aktualisieren Sie das Paket-Repository:
sudo apt update
2. Installieren Sie at
Befehl durch Ausführen von:
sudo apt install at
Installieren Sie unter CentOS und Fedora
Führen Sie die folgenden Schritte aus, um at
zu installieren auf CentOS oder Fedora:
1. Aktualisieren Sie das Paket-Repository:
sudo yum -y update
2. Führen Sie den folgenden Befehl aus, um at
zu installieren :
sudo yum install at
Scheduling-Daemon aktivieren
Der Scheduling-Daemon läuft im Hintergrund und führt die geplanten Jobs pünktlich aus.
Führen Sie nach der Installation von at
den folgenden Befehl aus Paket, um atd
zu aktivieren Scheduling-Daemon und stellen Sie ihn so ein, dass er beim Systemstart gestartet wird.
sudo systemctl enable --now atd
Linux unter Befehlssyntax und -optionen
Die Syntax für at
Befehl ist:
at [option] runtime
Mit den Optionen können Sie geplante Jobs anzeigen oder löschen und at
anpassen Auftragsplanung befehlen. Die verfügbaren Optionen sind:
Option | Beschreibung |
---|---|
-V | Druckt die Versionsnummer des Programms auf die Standardausgabe. |
-q [queue] | Verwendet den angegebenen [queue] bestehend aus einem einzelnen Buchstaben, der von a reicht -z und A -Z . Der a Warteschlange ist die Standardeinstellung für at und das b Warteschlange ist die Standardeinstellung für batch . Warteschlangen mit höheren Buchstaben laufen mit erhöhter Freundlichkeit. Wenn Sie einen Job mit einem Großbuchstaben an eine Warteschlange senden, wird der Job als an batch gesendet behandelt . Der batch Lastdurchschnittsregeln gelten, sobald es an der Zeit ist, den Job auszuführen. Ernennung einer Warteschlange zu atq bewirkt, dass nur in dieser Warteschlange anstehende Jobs angezeigt werden. |
-m | E-Mail an den Benutzer nach Abschluss des Auftrags, auch wenn keine Ausgabe erfolgt ist. Erfordert eine konfigurierte E-Mail-Adresse für den Benutzer, der den Auftrag geplant hat. |
-f [file] | Liest den Job aus der angegebenen [file] anstatt von der Standardeingabe. |
-b | Ein Alias für batch . Plant Jobs und führt sie in einem batch aus Warteschlange, wenn die durchschnittliche Systemlast unter 1,5 liegt. |
-l | Ein Alias für atq . Listet die ausstehenden Jobs des Benutzers auf. Wenn der Benutzer ein Superuser ist, werden die ausstehenden Jobs aller Benutzer aufgelistet. |
-d | Ein Alias für atrm . Löscht die geplanten Jobs, identifiziert durch ihre Jobnummer. |
-v | Zeigt die Jobausführungszeit vor dem Lesen des Jobs. Das Zeitformat ist Thu Feb 20 14:50:00 1997 . |
-c | Catert den angegebenen Job und zeigt seinen Inhalt in der Standard-Befehlszeilenausgabe. |
-t [time_arg] | Plant einen Job für die durch [time_arg] angegebene Zeit Streit. Das akzeptierte Zeitformat ist [[CC]YY]MMDDhhmm . |
[runtime]
Zeitausdrücke
Planen Sie einen Job mit absoluten Zeitausdrücken oder Zeitausdrücken relativ zum Zeitpunkt der Einstellung des Jobs.
Die verfügbaren absoluten Zeitausdrücke sind:
YYMMDDhhmm[.ss]
. Geben Sie ein abgekürztes Jahr, einen Monat, einen Tag, eine Stunde, eine Minute und optional Sekunden an.CCYYMMDDhhmm[.ss]
. Geben Sie ein ganzes Jahr, Monat, Tag, Stunde, Minute und optional Sekunden an.now
. Zeigt den aktuellen Tag und die aktuelle Uhrzeit sowie die sofortige Ausführung an.midnight
. Zeigt 00:00 Uhr an.noon
. Zeigt 12:00 Uhr an.teatime
. Interpretiert als 16 Uhr.AM
. Zeigt Zeit vor 12:00 Uhr an.PM
. Zeigt die Zeit nach 12:00 Uhr an.today
. Der aktuelle Tag.tomorrow
. Der Tag nach dem aktuellen Tag.
Beispielsweise plant der folgende Befehl einen echo-Befehlsaufruf um 17:00 Uhr:
echo "hello" | at 5PM
Geben Sie einen relativen Zeitausdruck an durch Hinzufügen eines Pluszeichens (+
), den Betrag und einen der folgenden Werte:
minutes
hours
days
weeks
months
years
Verwendung von Zeitausdrücken wie tomorrow
oder tuesday
, plant die Jobs an diesen Tagen zum aktuellen Zeitpunkt ein. Geben Sie die Zeit mit +
weiter an Zeichen.
Beispielsweise plant der folgende Befehl ein echo
Befehlsaufruf fünf Minuten nach dem Planen des Jobs:
echo "hello" | at now +5 minutes
Umwelt
Die SHELL
Der Wert der Umgebungsvariable bestimmt, in welcher Shell (bash, zsh usw.) der at
Befehl verwendet, um den Job auszuführen. Beim Planen des Jobs warnt der Befehl den Benutzer, welche Shell er während der Ausführung verwenden wird.
Linux bei Befehlsbeispielen
Der folgende Abschnitt demonstriert nützliche at
Befehlsbeispiele.
Einen Job interaktiv planen
Der at
Mit dem Befehl können Sie einen Job mit dem interaktiven at
planen prompt. Öffnen Sie die interaktive Eingabeaufforderung mit der folgenden Syntax:
at [runtime]
Mit der interaktiven Eingabeaufforderung können Sie eingeben, welche Befehle zur angegebenen Zeit ausgeführt werden sollen. Der Befehl gibt auch eine Warnung aus, die angibt, welche Shell der Befehl verwenden wird.
Verlassen Sie die interaktive Eingabeaufforderung und speichern Sie den geplanten Job, indem Sie Strg + D drücken . Brechen Sie den Job mit Strg + C ab .
Zum Beispiel:
Im obigen Beispiel haben wir einen Job für 17:00 Uhr geplant, wodurch die interaktive Eingabeaufforderung geöffnet wird. Der geplante Job soll das echo
ausführen Befehl, und das Dienstprogramm verwendet die Standard-Bash-Shell.
Einen Job an at weiterleiten
Planen Sie einen Job ohne das interaktive at
Eingabeaufforderung, indem Sie Befehle an at
weiterleiten und Angabe der Laufzeit. Verwenden Sie echo
oder printf, um die Befehle an at
zu übergeben .
Zum Beispiel:
echo "command_to_run" | at [runtime]
So planen Sie einen at
Job, der das echo
sendet Befehlsausgabe in eine Datei, verwenden Sie:
echo "hello" >> example.txt | at now
Verwenden Sie den cat-Befehl, um zu prüfen, ob die Datei existiert, um sicherzustellen, dass der Job ausgeführt wurde:
cat example.txt
Geplanten Auftrag anzeigen
Das -c
Option zeigt den Inhalt eines zuvor geplanten Jobs an. Die Option ist nützlich, wenn Sie vergessen haben, was der Auftrag war, oder die geplante Zeit überprüfen möchten.
Sehen Sie sich den Inhalt eines geplanten at
an Job mit der folgenden Syntax:
at -c [job_number]
Rufen Sie die Auftragsnummer ab, indem Sie atq
ausführen Befehl zuerst, um alle ausstehenden Jobs aufzulisten.
Zum Beispiel:
Im obigen Beispiel haben wir zuerst eine Liste aller anstehenden Jobs angefordert, um die Jobnummern zu erhalten, und dann den Inhalt von Job 14 in der Standardausgabe angezeigt.
Geplante Jobs auflisten
Der at
Mit dem Dienstprogramm können Sie überprüfen, welche Jobs sich noch in der Warteschlange befinden und auf ihre Ausführung warten. Es gibt zwei Möglichkeiten, die ausstehenden Jobs anzuzeigen:
- Führen Sie
atq
aus Befehl. - Verwenden Sie den
-l
Möglichkeit.
Zum Beispiel:
at -l
Die Ausgabe zeigt die ausstehende Auftragsnummer, das Datum, die Uhrzeit, das Jahr und die Warteschlange für den aktuellen Benutzer. Um ausstehende Jobs aller Benutzer aufzulisten, führen Sie den Befehl mit sudo
aus .
sudo atq
Im obigen Beispiel wird atq
ausgeführt zeigt ausstehende Jobs nur für den aktuellen Benutzer an. Ausführen von atq
mit sudo
zeigt ausstehende Jobs für alle Benutzer an.
Bei Ausführung eine E-Mail-Benachrichtigung senden
Der at
Das Dienstprogramm sendet standardmäßig E-Mail-Benachrichtigungen über abgeschlossene Aufträge. E-Mail-Benachrichtigungen erfordern eine funktionierende E-Mail-Adresse, die für Ihr Benutzerkonto konfiguriert ist, und das System muss in der Lage sein, E-Mails zu senden.
Um at
anzuweisen Um E-Mail-Benachrichtigungen nach Auftragsabschluss zu senden, auch wenn keine Ausgabe erfolgt, geben Sie -m
an Option.
Zum Beispiel:
rm example.txt | at -m tomorrow
Der obige Befehl plant den Job für die aktuelle Uhrzeit morgen ein. Wenn Sie fertig sind, wird at
Dienstprogramm benachrichtigt den Benutzer unter Verwendung der konfigurierten E-Mail-Adresse für den Benutzer bosko .
Jobs ohne Benachrichtigung ausführen
Um E-Mail-Benachrichtigungen über abgeschlossene Jobs zu vermeiden, geben Sie -M
an Option beim Planen eines at
Arbeit.
Zum Beispiel:
echo "shutdown -h now" | at -M 00:00
Im obigen Beispiel haben wir das Herunterfahren des Systems für Mitternacht geplant und das -M
verwendet Option, um zu verhindern, dass das Dienstprogramm die E-Mail-Benachrichtigung sendet.
Einen geplanten Auftrag entfernen
Um geplante at
zu entfernen Jobs, geben Sie -r
an Option oder führen Sie atrm
aus Befehl zusammen mit der Job-ID. Rufen Sie die Job-ID ab, indem Sie atq
ausführen oder mit -l
Option.
Im folgenden Beispiel haben wir Job 12 entfernt:
Benutzer einschränken
Der at
Paket verwendet zwei Dateien, um at
einzuschränken und batch
Befehlszugriff:
/etc/at.allow
/etc/at.deny
Bearbeiten Sie die Dateien, um nur bestimmten Benutzern zu erlauben, ausstehende at
zu erstellen, zu entfernen oder anzuzeigen Arbeitsplätze. Die Dateien sind eine Liste von Benutzernamen, die auf at
zugreifen können oder nicht Befehle. Ein Zeilenvorschubzeichen trennt die Benutzernamen und Leerzeichen sind nicht erlaubt.
Wichtig :Wenn die Datei /etc/at.allow
Datei existiert, dürfen nur die darin aufgeführten Benutzer at
verwenden oder batch
, und /etc/at.deny
Datei wird ignoriert. Wenn die Datei /etc/at.allow
Datei nicht existiert, die in /etc/at.deny
aufgelisteten Benutzer dürfen at
nicht verwenden oder batch
. Der Root-Benutzer kann immer at
ausführen Befehle, unabhängig von den Zugriffskontrolldateien.
Bearbeiten Sie /etc/at.deny
Datei mit sudo-Berechtigungen, um einem Benutzer den Zugriff auf at
zu verweigern Befehle. Im folgenden Beispiel haben wir die Datei mit dem vi-Editor bearbeitet:
sudo vi /etc/at.deny
Nachdem Sie der Liste einen Benutzernamen hinzugefügt haben, führen Sie at
aus Befehl unter Verwendung des eingeschränkten Benutzerkontos führt zu folgender Meldung:
Jobs ausführen, wenn die Systemlast dies zulässt
Der batch
Befehl (-b
Option) plant ein at
Job zur Ausführung, wenn die durchschnittliche Systemlast unter 1,5 fällt. Die Ausführung von Jobs bei geringer Systemlast verhindert den Verbrauch aller Systemressourcen und gewährleistet einen optimalen Systembetrieb.
Beispielsweise wird der folgende Job ausgeführt, sobald die Systemlast unter 1,5 fällt:
batch
echo "Hello world!" >> hello.txt