Wollen Sie einen Befehl nur einmal heute Abend, morgen früh oder nach einem Wartungsfenster ausführen? at vermeidet es, eine cron-Zeile zu erstellen, die Sie später vergessen. Es gibt jedoch eine Einschränkung: Der atd-Dienst muss laufen, und der Befehl wird von /bin/sh ausgeführt, nicht unbedingt von Ihrer interaktiven Shell.
Die nachfolgende Methode ermöglicht es, einen Job zu planen, zu kontrollieren und vor seiner Ausführung zu entfernen. Verwenden Sie einen absoluten Pfad für Skripte und Protokolldateien. Ein at-Job profitiert nicht von Ihrem Terminal oder Ihren Bash-Einstellungen.

At installieren und den Dienst überprüfen
Unter Debian, Ubuntu und deren Derivaten installieren Sie das Paket und aktivieren Sie den Daemon. Unter Fedora, RHEL oder Rocky Linux ersetzen Sie apt durch dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
Der Status sollte active (running) anzeigen. Wenn Ihr Konto abgelehnt wird, überprüfen Sie /etc/at.allow und /etc/at.deny. Diese Dateien bestimmen, welche Benutzer das Recht haben, Aufgaben einzureichen.
Einen Befehl planen, ohne cron zu hinterlassen
Um zu testen, ohne das System zu berühren, erstellen Sie in fünf Minuten eine kleine Datei in Ihrem persönlichen Ordner. Geben Sie den Befehl ein und beenden Sie die Eingabe mit Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# dann drücken Sie Ctrl+D
Für einen echten Eingriff vermeiden Sie relative Pfade. Der folgende Job startet einen Dienst morgen um 02:30 Uhr neu und speichert stdout und stderr in einem bekannten Protokoll:
at 02:30 tomorrow
/usr/bin/systemctl restart mein-service.service >> /var/log/mein-service-at.log 2>&1
# dann drücken Sie Ctrl+D
Planen Sie keinen Neustart oder eine Fernänderung, ohne den Befehl manuell überprüft zu haben. Wenn Sie über SSH arbeiten, halten Sie eine zweite Sitzung offen, bevor Sie eine Änderung vornehmen, die das Netzwerk oder den Dienst unterbrechen könnte.
Den Job überprüfen und die Uhrzeit der Maschine kontrollieren
atq zeigt die wartenden Jobs mit ihrer ID an. at -c ermöglicht es, das tatsächlich gespeicherte Skript zu sehen. Diese Lesung ist nützlich, wenn eine Variable, ein aktuelles Verzeichnis oder eine Umleitung für Ihren Befehl wichtig ist.
atq
at -c 7
timedatectl status
Ersetzen Sie 7 durch die von atq angezeigte Nummer. Überprüfen Sie auch die Zeitzone mit timedatectl status. Das Datum, das in at eingegeben wird, wird von der Maschine interpretiert, die den Daemon ausführt. Ein Server, der auf UTC eingestellt ist, wird den Job nicht unbedingt zur angezeigten Zeit auf Ihrem Arbeitsplatz starten.
Einen Job vor seiner Ausführung stornieren
Die Löschung erfolgt sofort. Notieren Sie sich die ID, entfernen Sie den Job, und starten Sie dann atq erneut, um zu bestätigen, dass er verschwunden ist.
atrm 7
atq
Verwenden Sie at für eine einmalige Aktion: eine Bereinigung nach einer Migration, einen einmaligen Neustart oder einen verzögerten Test. Für wiederkehrende Aufgaben sollten Sie lieber cron und crontab oder einen systemd-Timer verwenden. Sie vermeiden vor allem, einen einmalig geplanten Befehl in eine vergessene Automatisierung umzuwandeln.