Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

at - Kommandos zu einem späteren Zeitpunkt ausführen

&pagelevel(4)&pagelevel

(execute commands at a later time)


Das Kommando at

  • liest Kommandos von der Standard-Eingabe oder aus einem Shell-Skript und führt sie zu einem späteren Zeitpunkt, den Sie angeben, aus. Eine so entstandene Kommandoliste läuft unter einer Auftragsnummer (Format 1 und 2)

  • gibt auf die Standard-Ausgabe aus, welche mit at oder batch (siehe batch) erteilten Kommandoaufträge noch nicht bearbeitet wurden (Format 3 und 4)

  • löscht Kommandoaufträge, die mit at oder batch erteilt wurden (Format 5)

Wenn Sie die Standard-Ausgabe und Standard-Fehlerausgabe der auszuführenden Kommandos nicht umgelenkt haben, wird Ihnen die Ausgabe von Format 1 und Format 2 mit mailx geschickt.

Die Umgebungsvariablen, das aktuelle Dateiverzeichnis, die für neue Dateien gültigen Zugriffsrechte (siehe umask) und die maximal zulässige Dateigröße (siehe ulimit) bleiben erhalten. Offene Dateien und Prioritäten werden nicht vererbt. Das Kommando trap (eingebautes Shell-Kommando zum Abfangen von Signalen) wird aufgehoben.
at schreibt die Auftragsnummer und die angegebene Ausführungszeit auf die Standard-Fehlerausgabe.

Aufträge, die mit at erteilt werden, bleiben auch dann erhalten, wenn der Auftraggeber mit exit die POSIX-Shell beendet oder das POSIX-Subsystem beendet wird. Die Aufträge müssen nicht neu gestartet werden.

Vor dem Aufruf beachten

Die Benutzerkennung muss eine Standardabrechnungsnummer für den rlogin-Zugang haben. Diese kann mit den Kommandos ADD-USER, MODIFY-USER-ATTRIBUTES oder ADD-POSIX-USER zugewiesen werden.

Wenn die Datei /usr/lib/cron/at.allow existiert, dann dürfen Sie das Kommando at nur dann aufrufen, wenn Ihre Benutzerkennung in dieser Datei steht.

Wenn die Datei /usr/lib/cron/at.allow nicht existiert, dann dürfen Sie das Kommando at nur dann aufrufen, wenn Ihre Benutzerkennung nicht in der Datei /usr/lib/cron/at.deny steht.

Wenn weder /usr/lib/cron/at.allow noch /usr/lib/cron/at.deny existieren, dann darf nur der POSIX-Verwalter at aufrufen.

Existiert z.B. nur die leere deny-Datei, so dürfen alle Benutzer at aufrufen.

Die allow- und deny-Dateien darf nur der POSIX-Verwalter anlegen und ändern. Sie enthalten pro Zeile eine Benutzerkennung.

Der cron-Dämon wird über ein rc-Skript gestartet.

Syntax


Format 1:at[ -m][ -f skript][ -q warteschlange] -t zeit
Format 2:at[ -m][ -f skript][ -q warteschlange] zeitpunkt
Format 3:at -l[ auftragsnummer]
Format 4:at -l -q warteschlange
Format 5:at -r auftragsnummer
Kommandos zu einem späteren Zeitpunkt ausführen
Format 1:at[ -m][ -f skript][ -q warteschlange] -t zeit

-f skript

at liest die auszuführenden Kommandos aus dem angegebenen Shell-Skript.
Sie können mehrere Kommandos angeben, jeweils durch Strichpunkt ; oder Neue-Zeile-Zeichen getrennt. Eine so entstandene Kommandoliste läuft unter einer Auftragsnummer.Die Kommandoliste beenden Sie, abhängig vom verwendeten Terminal, mit CTRL+D oder @@d .

-f nicht angegeben:
at liest die auszuführenden Kommandos von der Standard-Eingabe.

-m

Wenn sich ein Auftrag beendet hat, schickt at dem Benutzer über mailx eine entsprechende Nachricht. Dies geschieht jedoch nur dann, wenn der Auftrag nicht bereits das Senden einer Nachricht veranlasst hat.

-q warteschlange

Durch die Option -q wird die Warteschlange im Dateiverzeichnis /var/spool/cron spezifiziert, in die der Auftrag eingereiht werden soll.

warteschlange kann sein:

a  für die standardmäßige Warteschlange für Aufträge des Kommandos at.

b  für die standardmäßige Warteschlange für Aufträge des Kommandos batch.

c  für die standardmäßige Warteschlange für Aufträge des Kommandos crontab.

-t zeit

Gibt den Ausführzeitpunkt für die Kommandos an. zeit geben Sie wie folgt an: 

[[CC]YY]MMDDhhmm[.SS]

CC

Die ersten beiden Ziffern einer Jahreszahl (Jahrhundert).
CC nicht angegeben:
Ist die zweistellige Jahreszahl größer 68, wird das aktuelle Jahrhundert angenommen, sonst das folgende.

YY

Jahreszahl zweistellig.
YY nicht angegeben:
Das aktuelle Jahr wird angenommen.

MM

Monatsangabe zweistellig (01 bis 12)

DD

Angabe des Tages zweistellig (01 bis 31)

hh

Angabe der Stunde zweistellig (00 bis 23)

mm

Angabe der Minute zweistellig (00 bis 59)

SS

Angabe der Sekunde zweistellig (00 bis 61)
Die Werte 60 und 61 sind für Schaltsekunden vorgesehen..
SS nicht angegeben:
Es werden 0 Sekunden angenommen.


Format 2:at[ -m][ -f skript][ -q warteschlange] zeitpunkt

Die Optionen sind unter Format 1 beschrieben.

zeitpunkt

Gibt den Ausführzeitpunkt für die Kommandos an. zeitpunkt geben Sie wie folgt an: 
zeit[ datum][ +inkrement]

zeit:

ziffern[suffix] oder sondername

ziffern

[h]h

hhmm

[h]h:[m]m

Eine und zwei Ziffern werden als Stunden interpretiert.

Vier Ziffern werden als Stunden und Minuten interpretiert.

Durch Doppelpunkt : getrennte Ziffern werden als Stunden und Minuten interpretiert.

suffix

am

Interpretation als vor 12 Uhr mittags (abhängig von der Umgebungsvariablen LC_TIME)

pm

Interpretation als nach 12 Uhr mittags (abhängig von der Umgebungsvariablen LC_TIME)

ohne ampm:

Interpretation im 24-Stunden-Format

utc[am|pm] oder zulu[am|pm]

Interpretation als UTC (Coordinated Universal Time)

sondername

noon (mittags), midnight (mitternachts), now (jetzt)

datum:

monat tag[,jahr] oder
wochentag[ nextweek|next week] oder
spezieller_tag

monat (abhängig von der Umgebungsvariablen LC_TIME)

jan[uary] (Januar), feb[ruary] (Februar), mar[ch] (März), apr[il] (Aprilmay (Mai), jun[e] (Juni), jul[y] (Juli), aug[ust] (August), sep[tember] (September), oct[ober] (Oktober), nov[ember] (November), dec[ember] (Dezember), nextmonth | next month (der auf den aktuellen Monat folgende Monat)

tag

Zahl zwischen 1 und 31, entsprechend der Länge des Monats

jahr

Jahreszahl, für die die Datumsangabe gelten soll
nextyear | next year: das auf das aktuelle Jahr folgende Jahr.
jahr nicht angegeben:
Wenn die Datumsangabe vor dem aktuellen Datum liegt, geht at vom nächsten Jahr, sonst vom aktuellen Jahr aus.

wochentag (abhängig von der Umgebungsvariablen LC_TIME)

mon[day] (Montag), tue[sday] (Dienstag), wed[nesday] (Mittwoch), thu[rsday] (Donnerstag), fri[day] (Freitag), sat[urday] (Samstag), sun[day] (Sonntag)

nextweek | next week

die auf die aktuelle Woche folgende Woche

spezieller_tag

today (heute), tomorrow (morgen), nextday | next day (der auf den aktuellen Tag folgende Tag

Die Angabe nextday (oder next day) bedeutet, dass der Auftrag einen Tag später ausgeführt wird.
Wenn die Zeitangabe vor der aktuellen Uhrzeit liegt, interpretiert at den nächsten Tag als aktuellen Tag. Wird z.B. am 1.7.95 um 11:00 Uhr der Auftrag at 10 nextday erteilt, so wird er erst am 3.7.95 um 10:00 Uhr ausgeführt. at 14 nextday bewirkt hingegen, dass die Ausführung am 2.7.95 um 14:00 Uhr erfolgt.

datum nicht angegeben:

Entspricht der Angabe today, wenn die Zeitangabe (gerundet auf die Minute) nach der aktuellen Uhrzeit liegt.

Entspricht der Angabe tomorrow, wenn die Zeitangabe (gerundet auf die Minute) vor der aktuellen Uhrzeit liegt.

Entspricht der Angabe now, wenn die Zeitangabe (gerundet auf die Minute) gleich der aktuellen Uhrzeit ist.

+inkrement

inkrement ist eine positive ganze Zahl, auf die eine der folgenden Zeiteinheiten folgen muss:

minute[s] (Minute(n)), hour[s] (Stunde(n)), day[s] (Tag(e)), week[s] (Woche(n)), month[s] (Monat(e)), year[s] (Jahr(e))


Beispiel:

at können Sie u.a. in folgenden Formen angeben:

at 0815am jan 24 
at 8:15am jan 24 
at 5pm friday 
at now +1hour 
Nicht bearbeitete Aufträge ausgeben
Format 3:at -l[ auftragsnummer]
Format 4:at -l -q warteschlange

-l[ auftragsnummer]

at listet den Auftrag mit auftragsnummer auf, wenn er noch nicht bearbeitet wurde. auftragsnummer ist die Nummer, die auf die Standard-Fehlerausgabe ausgegeben wird, wenn ein Kommandoauftrag mit at, batch oder cron erteilt wird.

auftragsnummer nicht angegeben:
at listet alle Aufträge, die noch nicht bearbeitet wurden, mit ihren Auftragsnummern auf.

-l -q warteschlange

Alternativ zur auftragsnummer kann die Warteschlange angegeben werden. at listet alle Aufträge auf, die in warteschlange stehen.

Aufträge löschen
Format 5:at -r auftragsnummer

-r auftragsnummer

at löscht den Auftrag auftragsnummer, den Sie zuvor mit at oder batch erteilt haben. auftragsnummer ist die Nummer, die auf die Standard-Fehlerausgabe ausgegeben wird, wenn ein Kommandoauftrag mit at oder batch erteilt wird. Sie können mehrere Auftragsnummern,getrennt durch Leerzeichen, angeben. Nur der POSIX-Verwalter hat das Recht, Aufträge von anderen Benutzern zu löschen.


Fehler

Die häufigsten Fehlermeldungen sind:


at: bad date specification

Sie haben das Datum in einem falschen Format angegeben.


at: too late

Sie haben ein bereits abgelaufenes Datum angegeben.


at: This job may not be executed at the proper time

zeit liegt zwischen „now“ und „now+1hour“.


at: you are not authorized to use at. Sorry.

Sie dürfen at nicht aufrufen (siehe Vor dem Aufruf beachten).

Datei

/usr/lib/cron/at.allow

Liste der Benutzerkennungen mit Ausführrecht für at. In jeder Zeile steht jeweils eine Benutzerkennung.

/usr/lib/cron/at.deny

Liste der Benutzerkennungen ohne Ausführrecht für at. In jeder Zeile steht jeweils eine Benutzerkennung.

/var/spool/cron/atjobs

Dateiverzeichnis, in dem die noch nicht bearbeiteten at-Aufträge in einzelnen Dateien aufgelistet werden. Für jeden at-Auftrag gibt es eine eigene Datei mit dem Dateinamen auftragsnummer.a.

Variable

SHELL

bestimmt den Namen eines Kommandointerpreters, um den at-Auftrags aufzurufen. Ist diese Variable nicht gesetzt oder hat den Wert 0, wird sh verwendet.

TZ

bestimmt die Zeitzone. Der at-Auftrag wird zum Zeitpunkt -t zeit oder zeitpunkt ausgeführt, relativ zu der in TZ bestimmten Zeitzone. Wenn zeitpunkt eine Zeitzone bestimmt, wird TZ überschrieben. Wenn zeitpunkt keine Zeitzone bestimmt und TZ nicht gesetzt ist oder den Wert 0 hat, wird der entsprechende Standardwert verwendet.

Internationale Umgebung

Die folgenden Umgebungsvariablen beeinflussen die Ausführung des Kommandos at:

LANG

Gibt einen Standardwert für die Variablen für die internationale Umgebung an, die nicht gesetzt oder Null sind. Ist LANG nicht gesetzt oder Null, wird der entsprechende Standardwert der internationalen Umgebung verwendet. Enthält eine der Variablen eine ungültige Einstellung, verhält sich das Kommando so, als sei keine der Variablen definiert worden.

LC_ALL

Ist diese Variable auf einen Wert gesetzt, d. h. ist sie nicht leer, überschreibt dieser Wert die Werte aller übrigen Internationalisierungsvariablen.

LC_CTYPE

Legt die internationale Umgebung für die Interpretation der Byte-Folgen eines Datentexts als Zeichen fest (z.B. Singlebytezeichen im Unterschied zu Mehrbytezeichen in Argumenten und Eingabedateien).

LC_TIME

Legt das Format der Datums- und Zeitangaben fest, die von at geschrieben und akzeptiert werden.

LC_MESSAGES

Legt das Format und den Inhalt von Fehlermeldungen fest. Die hier angegebene internationale Umgebung gilt auch für informative Meldungen, die auf die Standard-Ausgabe geschrieben werden.

NLSPATH

Legt den Pfad der Meldungsdateien für LC_MESSAGES fest.

Beispiel

Es soll am 1. April um 13 Uhr an der Datensichtstation tty013 das aktuelle Datum und die Zeichenkette April, April! ausgegeben werden:

$ at 1pm apr 1

echo `date`":April, April!" >> /dev/tty013

CTRL+D oder @@d

Siehe auch

batch, crontab, date, kill, mailx, nice, ps, sh, sort