Befehl "at"

Zweck

Führt Befehle zu einem späteren Zeitpunkt aus.

Syntax

Ausführung von Jobs zu einem späteren Zeitpunkt planen

at [ -c | -k | -s | -q Queue ] [ -m ] [ -f File ] { -t Date |Time [ Day ] [ Increment ] }

Geplante Jobs berichten

at -l [ -v ] [ -o ] [ Job.. | -q Queue ]

at -n [ Benutzer ]

Geplante Jobs entfernen

at -r [ -F ] [ -i ] Job...

at -r [ -F ] [ -i ] -u Benutzer

Beschreibung

Der Befehl at liest die Namen von Befehlen, die zu einem späteren Zeitpunkt ausgeführt werden sollen, aus der Standardeingabe und ermöglicht Ihnen anzugeben, wann die Befehle ausgeführt werden sollen.

Der Befehl at sendet Ihnen eine Mail mit der gesamten Ausgabe für die geplanten Befehle aus der Standardausgabe und Standardfehlerausgabe, sofern Sie diese Ausgabe nicht umleiten. Er schreibt auch die Jobnummer und die geplante Uhrzeit in die Standardfehlerausgabe.

Bei der Ausführung des Befehls at wird die aktuelle Prozessumgebung beibehalten. Offene Dateideskriptoren, Traps und Prioritäten werden nicht beibehalten.

Die Dateien /var/adm/cron/at.allow und /var/adm/cron/at.deny steuern, welche Benutzer den Befehl at verwenden können. Ein Benutzer mit Rootberechtigung kann diese Dateien erstellen, editieren und löschen. Bei den Einträgen in diesen Dateien handelt es sich um Benutzeranmeldenamen, die jeweils zeilenweise aufgelistet werden. Im Folgenden sehen Sie eine Beispieldatei at.allow:

root
nick
dee
sarah

Wenn die Datei at.allow vorhanden ist, können nur Benutzer, deren Anmeldenamen in dieser Datei enthalten sind, den Befehl at verwenden. Ein Systemadministrator kann einem Benutzer explizit verweigern, den Befehl at zu verwenden, indem er den Anmeldenamen des Benutzers in der Datei at.deny auflistet. Wenn nur die Datei at.deny vorhanden ist, kann jeder Benutzer, dessen Name nicht in der Datei enthalten ist, den Befehl at verwenden.

Ein Benutzer kann den Befehl at nicht verwenden, wenn eine der folgenden Bedingungen zutrifft:

  • Die Datei at.allow und die Datei at.deny sind nicht vorhanden (nur der Rootbenutzer hat Zugriff auf den Befehl).
  • Die Datei at.allow ist vorhanden, aber der Anmeldename des Benutzers ist nicht in der Datei aufgelistet.
  • Die Datei at.deny ist vorhanden und der Anmeldename des Benutzers ist in der Datei aufgelistet.

Wenn die Datei at.allow und die Datei at.deny nicht vorhanden sind, können nur Benutzer mit Rootberechtigung mit dem Befehl at einen Job übergeben.

Um die Ausführung eines Jobs zu einem späteren Zeitpunkt zu planen, müssen Sie die Uhrzeit angeben, zu der der Job gestartet werden soll. Sie können die Uhrzeit mit dem Flag -t Datum oder mit den Parametern Uhrzeit, Tag und Inkrement angeben. Sie können eine beliebige Anzahl von Jobs mit einer maximalen Granularität von 60 pro Sekunde planen.

Die Variable Datum des Flags -t wird im folgenden Format angegeben:

[[CC]YY]MMDDhhmm[.SS]

Die Ziffern in der Variablen Datum sind wie folgt definiert:

Element Beschreibung
CC Gibt die ersten beiden Ziffern des Jahres (das Jahrhundert) an.
YY Gibt die zweiten beiden Ziffern des Jahres an.
MM Gibt den Monat des Jahres an (01 bis 12).
DD Gibt den Tag des Monats an (01 bis 31).
hh Gibt die Stunde des Tages an (00 bis 23).
mm Gibt die Minute der Stunde an (00 bis 59).
SS Gibt die Sekunde der Minute an (00 bis 59).

Die CC- und JJ-Ziffern sind optional. Wenn Sie diese Ziffern nicht angeben, wird das aktuelle Jahr angenommen. Wenn Sie die JJ-Ziffern angeben, aber die CC-Ziffern nicht, sind die CC-Ziffern wie folgt definiert:

  • Wenn der Wert der JJ-Ziffern zwischen 70 und 99 liegt, wird als Wert für die CC-Ziffern 19 angenommen.
  • Wenn der Wert der JJ-Ziffern zwischen 00 und 37 liegt, wird als Wert für die CC-Ziffern 20 angenommen.
  • Der Standardwert von SS ist 00.

    Geben Sie für Jahre Jahre zwischen 2038 und 2105 das Jahr im Format jjjj an.

Die entsprechende Uhrzeit richtet sich nach dem Wert der Umgebungsvariablen TZ.

Der Parameter Uhrzeit kann als Zahl gefolgt von einem optionalen Suffix angegeben werden. Der Befehl at interpretiert ein- und zweistellige Zahlen als Stunden. Er interpretiert vier Ziffern als Stunden und Minuten. Das Element T_FMT in der LC_TIME-Ländereinstellungskategorie die Reihenfolge von Stunden und Minuten an. Die Standardreihenfolge ist die Stunde gefolgt von der Minute. Sie können Stunden und Minuten auch mit einem Doppelpunkt (:) voneinander trennen. Die Standardreihenfolge ist Stunde:Minute.

Darüber hinaus können Sie eines der folgenden Suffixe angeben:

  • vormittags
  • pm
  • zulu

Wenn Sie weder am noch pm angeben, verwendet der Befehl at das 24-Stunden-Format. Diese Suffixe können hinter der Uhrzeit als separates Argument oder durch Leerzeichen getrennt angegeben werden. Die Suffixe am und pm sind definierte Werte aus den Elementen AM_STR und PM_STR in der LC_TIME-Ländereinstellungskategorie. Das Suffix zulu gibt an, dass die Zeit GMT (Greenwich Mean Time) ist.

Der Befehl at erkennt außerdem die folgenden Schlüsselwörter als Sonderwerte für den Parameter Uhrzeit:

  • mittag
  • Mitternacht
  • jetzt
  • A für AM
  • P für PM
  • N für noon
  • M für midnight

Sie können den optionalen Parameter Tag entweder als Monatsnamen und als Tagesnummer (und potenziell mit einer Jahreszahl mit vorangestelltem Komma) oder als Wochentag angeben. Das Element D_FMT in der LC_TIME-Ländereinstellungskategorie gibt die Reihenfolge von Monat und Tag an (standardmäßig Monat gefolgt vom Tag). Die Elemente DAY_1 bis DAY_7 in der LC_TIME-Ländereinstellungskategorie geben lange Tagesnamen an. Die Elemente ABDAY_1 bis ABDAY_7 in der LC_TIME-Ländereinstellungskategorie geben kurze Tagesnamen an. Die Elemente MON_1 bis MON_12 in der LC_TIME-Ländereinstellungskategorie lange Monatsnamen an. Die Elemente ABMON_1 bis ABMON_12 in der LC_TIME-Ländereinstellungskategorie geben kurze Monatsnamen an. Standardmäßig wird der ausgeschriebene Name vollständig angegeben. Der Kurzname ist auf zwei oder mehr Zeichen für Wochentage und drei Zeichen für Monate gekürzt.

Der Befehl at erkennt today und tomorrow als Sonderstandardwerte für den Parameter Tag. Der Wert today ist der Standardwert für Tag, wenn die angegebene Zeit nach der aktuellen Stunde liegt. Der Wert tomorrow ist der Standardwert, wenn die Uhrzeit vor der aktuellen Stunde liegt. Wenn der angegebene Monat vor dem aktuellen Monat liegt (und kein Jahr angegeben ist), wird standardmäßig das nächste Jahr verwendet.

Flags

Element Beschreibung
-c Fordert den Befehl csh für die Ausführung dieses Jobs an.
-f Datei Verwendet die angegebene Datei anstelle der Standardeingabe als Eingabe.
-F Unterdrückt die Bestätigung einer Löschoperation. Verwenden Sie dieses Flag zusammen mit dem Flag -r.
-i Gibt an, dass eine Löschoperation interaktiv durchgeführt werden soll. Verwenden Sie dieses Flag zusammen mit dem Flag -r.
-k Fordert den Befehl ksh für die Ausführung dieses Jobs an.
-l Berichtet die geplanten Jobs. Wenn Sie Rootberechtigung haben, können Sie auch die von anderen Benutzern abgesetzten Jobs abrufen.
-m Sendet eine Nachricht über die erfolgreiche Ausführung des Befehls per Mail an den Benutzer.
-n [ Benutzer ] Berichtet die Anzahl der Dateien in Ihrer Warteschlange oder in der Warteschlange des Benutzers.
-o Listet Jobs in der geplanten Reihenfolge auf. Dieses Flag ist nur zusammen mit dem Flag -l hilfreich.
-q Warteschlange Gibt die Warteschlange an, in der ein Job zur Übergabe geplant werden soll. Wenn Sie dieses Flag zusammen mit dem Flag -l verwenden, wird der Bericht auf die mit der Variablen Warteschlange angegebenen Warteschlange begrenzt. Standardmäßig werden at-Jobs in der Warteschlange a geplant. Die Warteschlangen b-, c und d sind für batch-, cron- bzw. sync-Jobs reserviert.
-q a
Reiht at-Jobs in eine Warteschlange ein.
-q b
Reiht Batch-Jobs in eine Warteschlange ein. Der Befehl batch ruft den Befehl at mit diesem Flag auf.
Hinweis: Bei Verwendung der b-Warteschlange werden die Befehle von der Standardeingabe gelesen. Außerdem wird das Schlüsselwort now für den Parameter Uhrzeit verwendet, unabhängig davon, was Sie in der Befehlszeile angeben.
-q e
Reiht ksh-Jobs in eine Warteschlange ein. Entspricht dem Flag -k.
-q f
Reiht csh-Jobs in eine Warteschlange ein. Entspricht dem Flag -c.
-q g-z
Reiht benutzerdefinierte Warteschlangenjobs in eine Warteschlange ein.
-r Job... Entfernt Jobs, die zuvor durch die Befehle at oder batch geplant wurden, wobei Job die Nummer ist, die von den Befehlen at oder batch zugeordnet wird. Wenn Sie keine Rootberechtigung haben (siehe den Befehl su), können Sie nur Ihre eigenen Jobs entfernen. Der dem Rootbenutzer zur Verfügung stehende Befehl atrm kann verwendet werden, um Jobs, die von anderen Benutzern abgesetzt wurden, oder alle Jobs, die von einem bestimmten Benutzer abgesetzt wurden, zu entfernen.
-s Fordert den Befehl bsh (Bourne-Shell) für die Ausführung dieses Jobs an.
-t Datum Übergibt den Job, der zu dem mit der Variablen Datum angegebenen Zeitpunkt ausgeführt werden soll.
-u Benutzer Löscht alle Jobs für den angegebenen Benutzer. Wenn Sie dieses Flag zusammen mit dem Flag -r verwenden, geben Sie die Variable Job nicht an (die korrekte Syntax ist at -r -u Benutzer).
-v Wird mit dem Flag ' -l verwendet, um den Inhalt der aufgelisteten Stellen anzuzeigen.

Parameter

Element Beschreibung
Tag Gibt den optionalen Parameter Tag als Monatsnamen und Tagesnummer (und potenziell mit einer Jahreszahl mit vorangestelltem Komma) oder als Wochentag an.
Inkrement Für den optionalen Parameter Inkrement kann einer der folgenden Werte angegeben werden:
  • + (Pluszeichen) gefolgt von einer Zahl und einem der folgenden Wörter:
    • minute[n]
    • stunde[n]
    • tag[e]
    • woche[n]
    • monat[e]
    • jahr[e]
  • Sonderwort next gefolgt von einem der folgenden Wörter:
    • minute[n]
    • stunde[n]
    • tag[e]
    • woche[n]
    • monat[e]
    • jahr[e]

Sicherheit

Prüfereignisse

Wenn das Prüfsubsystem ordnungsgemäß konfiguriert und aktiviert ist, generiert der Befehl at bei jeder Ausführung des Befehls den folgenden Prüfdatensatz bzw. das folgende Ereignis:

Ereignis Informationen
AT_JobAdd Listet at-Jobs, die ausgeführt wurden, die Uhrzeit, zu der die Task ausgeführt wurde, und den Benutzer, der den Befehl abgesetzt hat, auf.

Weitere Einzelheiten zur richtigen Auswahl und Gruppierung von Audit-Ereignissen sowie zur Konfiguration der Sammlung von Audit-Ereignissen finden Sie unter Einrichten von Auditing in Security.

Achtung RBAC-Benutzer und vertrauenswürdige AIX®: Dieser Befehl kann privilegierte Operationen durchführen. Privilegierte Operationen können nur von privilegierten Benutzern ausgeführt werden. Weitere Informationen zu Berechtigungen und Autorisierungen finden Sie im Abschnitt "Privileged Command Database" in der Veröffentlichung Security. Eine Liste der Privilegien und Berechtigungen für diesen Befehl finden Sie in den Beschreibungen des Befehls lssecattr und des Unterbefehls getcmdattr.

Exitstatus

Dieser Befehl gibt die folgenden Exitwerte zurück:

Element Beschreibung
0 Der Befehl at hat einen Job oder mehrere Jobs erfolgreich übergeben, entfernt oder aufgelistet.
>0 Es ist ein Fehler aufgetreten.

Beispiele

  1. Geben Sie einen Befehl wie den folgenden ein, um den Befehl über das Terminal zu planen:

    Wenn sich uuclean in Ihrem aktuellen Verzeichnis befindet, geben Sie Folgendes ein:

    at   5   pm   Friday
    uuclean
    <Ctrl-D>
     
    at   now   next   week
    uuclean
    <Ctrl-D>

    Wenn sich uuclean im Verzeichnis $HOME/bin/uuclean befindet, geben Sie Folgendes ein:

    at   now   +   2   days
    $HOME/bin/uuclean
    <Ctrl-D>
    Hinweis: Bei der Eingabe eines Befehlsnamens als letztes Element in der Befehlszeile muss ein vollständiger Pfadname angegeben werden, wenn sich der Befehl nicht im aktuellen Verzeichnis befindet, und der Befehl at akzeptiert keine Argumente.
  2. Geben Sie einen der folgenden Befehle ein, um den Befehl uuclean am 24. Januar um 15:00 Uhr auszuführen:
    echo   uuclean   |   at   3:00   pm   January   24
     
    echo   uuclean   |   at   3 pm   Jan   24
     
    echo   uuclean   |   at   1500   jan   24
  3. Damit sich ein Job selbst neu plant, rufen Sie den Befehl at im Shell-Script auf, indem Sie einen ähnlichen Code wie den folgenden in die Shelldatei einfügen:
    echo   "ksh   shellfile"   |   at   now   tomorrow
  4. Geben Sie Folgendes ein, um die Jobs aufzulisten, die Sie zur späteren Ausführung gesendet haben:
    at    -l
  5. Geben Sie Folgendes ein, um einen Job abzubrechen:
    at    -r   ctw.635677200.a
    Dies bricht den Auftragctw.635677200.a. Verwenden Sie den Befehl at -l, um die Ihren Aufträgen zugewiesenen Auftragsnummern aufzulisten.

Dateien

Element Beschreibung
/var/adm/cron/FIFO Eine benannte Pipe, die Nachrichten an den Dämon cron sendet, wenn neue Jobs mit dem Befehl crontab oder at übergeben werden.
/usr/bin/at Enthält den Befehl at.
/var/adm/cron Enthält das Cron-Hauptverzeichnis.
/var/adm/cron/at.allow Gibt die Liste der zulässigen Benutzer an.
/var/adm/cron/at.deny Gibt die Liste der abgelehnten Benutzer an.
Element Beschreibung
/var/spool/cron/atjobs Enthält das Spoolbereichsverzeichnis für at.