at¶
Siehe auch
Um einen Befehl einmalig in der Zukunft auszuführen, kann das at-Kommando verwendet werden. Mit at definierte Jobs bleiben auch nach einem Reboot in der Queue erhalten. at läuft unter /bin/sh, nicht unter Bash. Es ist für Benutzer ohne root-Rechte einsetzbar.
dnf -y install at
systemctl enable --now atd
# the specification "echo" is mandatory, otherwise the command will be executed directly
echo "systemctl reboot" | at 18:30
echo "systemctl reboot" | at midnight
echo "systemctl reboot" | at 10am Jul 31
# relative scheduling
echo "systemctl reboot" | at 6pm + 3 days
echo "systemctl reboot" | at now + 5 minutes
# specify timezone explicitly; runs at 18:30 UTC, not at 18:30 local time
echo "systemctl reboot" | TZ=UTC at 18:30
# run a script file instead of a piped command
at -f /path/to/script.sh 18:30
# show the content of a scheduled job (incl. the frozen environment)
at -c 5
Liegt die angegebene Uhrzeit heute bereits in der Vergangenheit, plant at den Job automatisch auf den nächsten Tag. Wird at 18:30 beispielsweise um 19:00 abgesetzt, läuft der Job am Folgetag um 18:30. Das Ergebnis ist in diesem Fall identisch zu at 18:30 + 1 days. Eine sekundengenaue Angabe ist nicht möglich.
Das ISO-8601-Format wird nicht akzeptiert. at 2030-12-30T13:00 schlägt mit einem Syntaxfehler fehl. Zuerst die Uhrzeit, dann das Datum angeben, also at 13:00 2030-12-30.
Zur Zugriffssteuerung dienen /etc/at.allow und /etc/at.deny: Existiert at.allow, dürfen nur dort aufgeführte Benutzer at verwenden, at.deny wird in diesem Fall ignoriert. Andernfalls dürfen alle Benutzer ausser den in at.deny gelisteten at verwenden. Standardmässig ist at für alle Benutzer freigegeben.
atq listet die definierten Jobs mit ihren IDs auf, atrm <id> <id> ... löscht einen oder mehrere Jobs. Die vorletzte Spalte ist die Queue: a ist die Default-Queue der at-Jobs, = ist für gerade laufende Jobs reserviert.
# list jobs
atq
1 Fri May 8 18:30:00 2026 a root # <- scheduled
2 Fri May 8 18:30:00 2026 = root # <- currently running
# delete jobs
atrm 1 2