GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bei Befehl unter Linux

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 at auf Ubuntu und Debian

    sudo apt update sudo apt install at
  • Installieren Sie at auf CentOS und Fedora

    sudo 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:MM oder HHMM form. Um ein 12-Stunden-Zeitformat anzugeben, verwenden Sie am oder pm nach der Zeit. Sie können auch Zeichenfolgen wie now verwenden , midnight , noon , oder teatime (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 today verwenden , tomorrow , oder Wochentag. Das Datum kann auch mit dem MMDD[CC]YY angegeben werden , MM/DD/[CC]YY , DD.MM.[CC]YY oder [CC]YY-MM-DD Formate.

  • Erhöhen - at akzeptiert auch Inkremente in der now + count time-unit Format, wobei count ist eine Zahl und time-unit kann einer der folgenden Strings sein:minutes , hours , days , oder weeks .

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.


Linux
  1. Linux ifconfig-Befehl

  2. Linux-mv-Befehl

  3. Linux-Du-Befehl

  4. Linux-IP-Befehl

  5. Linux-cd-Befehl

Kostenloser Befehl unter Linux

Sudo-Befehl unter Linux

Suchen Sie Command in Linux

Du-Befehl unter Linux

W-Befehl unter Linux

Df-Befehl unter Linux