Czy musisz uruchomić polecenie tylko raz dzisiaj wieczorem, jutro rano lub po oknie konserwacyjnym? at unika tworzenia zadania cron, które potem zapomnisz. Ma jednak jedną wadę: usługa atd musi działać, a polecenie zostanie wykonane przez /bin/sh, a niekoniecznie przez twoją interaktywną powłokę.
Poniższa metoda pozwala zaplanować, kontrolować, a potem usunąć zadanie przed jego wykonaniem. Użyj absolutnej ścieżki do skryptów i plików logów. Zadanie at nie korzysta z twojego terminala ani z żadnych ustawień Bash.

Zainstaluj at i sprawdź usługę
Na Debianie, Ubuntu oraz ich pochodnych zainstaluj pakiet, a następnie włącz demon. Na Fedory, RHEL lub Rocky Linux, zastąp apt przez dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
Status powinien wskazywać active (running). Jeśli twoje konto jest odrzucane, sprawdź /etc/at.allow i /etc/at.deny. Te pliki określają, którzy użytkownicy mają prawo do przesyłania zadań.
Zaplanowanie polecenia bez pozostawienia crona
Aby przetestować bez dotykania systemu, stwórz mały folder w swoim katalogu domowym za pięć minut. Wprowadź polecenie, a następnie zakończ wprowadzanie przez Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# następnie naciśnij Ctrl+D
Dla rzeczywistej interwencji, unikaj ścieżek względnych. Następujące zadanie restaruje usługę jutro o 02:30 i zachowa stdout oraz stderr w znanym logu:
at 02:30 tomorrow
/usr/bin/systemctl restart moja-usługa.service >> /var/log/moja-usługa-at.log 2>&1
# następnie naciśnij Ctrl+D
Nie planuj ponownego uruchomienia ani zdalnej modyfikacji bez ręcznego sprawdzenia polecenia. Jeśli pracujesz przez SSH, trzymaj otwartą zdalną sesję przed zmianą, która może przerwać sieć lub usługę.
Ponownie sprawdź zadanie i kontroluj czas maszyny
atq wyświetla oczekujące zadania z ich identyfikatorem. at -c pozwala zobaczyć rzeczywisty zarejestrowany skrypt. Ta lektura jest przydatna, gdy zmienna, bieżący katalog lub przekierowanie mają znaczenie dla twojego polecenia.
atq
at -c 7
timedatectl status
Zmień 7 na numer wyświetlony przez atq. Sprawdź także strefę czasową za pomocą timedatectl status. Data wprowadzona do at jest interpretowana przez maszynę wykonującą demon. Serwer ustawiony na UTC nie uruchomi zadania o czasie wyświetlanym na twoim komputerze.
Anuluj zadanie przed jego wykonaniem
Usunięcie jest natychmiastowe. Weź identyfikator, usuń zadanie, a następnie ponownie uruchom atq, aby potwierdzić, że zniknęło.
atrm 7
atq
Używaj at do jednorazowego działania: czyszczenie po migracji, jednorazowe ponowne uruchomienie lub opóźnione testowanie. Dla powtarzającego się zadania lepiej użyć crona i crontab lub timera systemd. Unikniesz głównie przekształcania jednorazowego polecenia w zapomnianą automatyzację.