Vous devez lancer une commande une seule fois ce soir, demain matin ou après une fenêtre de maintenance ? at évite de créer une ligne cron que vous oublierez ensuite. Il garde toutefois une contrainte : le service atd doit tourner, et la commande sera exécutée par /bin/sh, pas forcément par votre shell interactif.
La méthode ci-dessous permet de planifier, contrôler puis retirer un job avant son exécution. Utilisez un chemin absolu pour les scripts et les fichiers de log. Un job at ne bénéficie pas de votre terminal ni de tous vos réglages Bash.

Installer at et vérifier le service
Sur Debian, Ubuntu et leurs dérivées, installez le paquet puis activez le démon. Sur Fedora, RHEL ou Rocky Linux, remplacez apt par dnf.
sudo apt update
sudo apt install at
sudo systemctl enable --now atd
systemctl status atd --no-pager
Le statut doit indiquer active (running). Si votre compte reçoit un refus, contrôlez /etc/at.allow et /etc/at.deny. Ces fichiers déterminent quels utilisateurs ont le droit de soumettre des tâches.
Planifier une commande sans laisser de cron
Pour tester sans toucher au système, créez un petit fichier dans votre dossier personnel dans cinq minutes. Tapez la commande, puis terminez la saisie par Ctrl + D.
at now + 5 minutes
mkdir -p "$HOME/at-test"
date > "$HOME/at-test/executed-at.txt"
# puis appuyez sur Ctrl+D
Pour une intervention réelle, évitez les chemins relatifs. Le job suivant redémarre un service demain à 02:30 et conserve stdout et stderr dans un log connu :
at 02:30 tomorrow
/usr/bin/systemctl restart mon-service.service >> /var/log/mon-service-at.log 2>&1
# puis appuyez sur Ctrl+D
Ne planifiez pas un redémarrage ou une modification distante sans avoir vérifié la commande manuellement. Si vous travaillez en SSH, gardez une seconde session ouverte avant un changement qui peut couper le réseau ou le service.
Relire le job et contrôler l’heure de la machine
atq affiche les jobs en attente avec leur identifiant. at -c permet de voir le script réellement enregistré. Cette lecture est utile quand une variable, un répertoire courant ou une redirection compte pour votre commande.
atq
at -c 7
timedatectl status
Remplacez 7 par le numéro affiché par atq. Vérifiez aussi le fuseau horaire avec timedatectl status. La date saisie dans at est interprétée par la machine qui exécute le démon. Un serveur réglé sur UTC ne lancera pas forcément le job à l’heure affichée sur votre poste.
Annuler un job avant son exécution
La suppression est immédiate. Reprenez l’identifiant, retirez le job, puis relancez atq pour confirmer qu’il a disparu.
atrm 7
atq
Utilisez at pour une action ponctuelle : une purge après migration, un redémarrage unique ou un test différé. Pour une tâche répétée, gardez plutôt cron et crontab ou un timer systemd. Vous éviterez surtout de transformer une commande prévue une fois en automatisation oubliée.