atd — Exécution différée de tâches
atd est le démon de la commande at : il exécute une commande une seule fois, à un instant donné dans le futur. Contrairement à cron (récurrent), at est fait pour du ponctuel : « exécute ceci ce soir à 22h » sans avoir à créer puis supprimer une entrée cron.
Installation
sudo apt install at
sudo dnf install at
sudo pacman -S at
sudo systemctl enable --now atd
Fichiers de configuration
| Fichier | Rôle |
|---|---|
/etc/at.allow | Liste blanche des utilisateurs autorisés à utiliser at |
/etc/at.deny | Liste noire (si at.allow absent) |
/var/spool/cron/atjobs/ | Fichiers des tâches en attente |
/var/spool/cron/atspool/ | Sortie des tâches exécutées |
Commandes utiles
at 22:00 # planifier une tâche interactive (Ctrl+D pour valider)
at now + 30 minutes
at 14:00 tomorrow
atq # lister les tâches en attente (= at -l)
atrm <job_id> # annuler une tâche (= at -d)
systemctl status atd
Exemple de configuration
echo "/usr/local/bin/purge-tmp.sh" | at 23:30
atq
# 3 Thu Mar 6 23:30:00 2026 a matteo
Planifie l'exécution d'un script de purge une seule fois ce soir à 23h30, sans passer par une crontab.
Sécurisation
- Restreindre l'accès via
/etc/at.allow(liste blanche) plutôt que de laisser tout utilisateur planifier des tâches. - Les tâches
ats'exécutent avec l'environnement et les droits de l'utilisateur qui les a soumises — vérifier qu'aucun secret n'est passé en clair dans la commande (visible viaatq/at -c <job>). - Auditer régulièrement
atqsur un système sensible : une tâcheatest un vecteur de persistance classique utilisé en post-exploitation.
Logs & dépannage
journalctl -u atd -f
at -c <job_id> # afficher le contenu exact d'une tâche en attente
Si une tâche planifiée ne s'exécute pas : vérifier que atd tourne (systemctl status atd) et que l'utilisateur est bien autorisé (at.allow/at.deny).
Voir aussi
- cron — pour des tâches récurrentes plutôt que ponctuelles