Aller au contenu
Administration Linux medium

Planifier une tâche unique avec at, atq et atrm

5 min de lecture

Vous n’avez pas toujours besoin de cron ou d’un timer systemd. Quand vous devez exécuter une action une seule fois dans 10 minutes, ce soir à 23 h, ou demain matin, at est l’outil le plus direct. Ce guide vous montre le trio at + atq + atrm avec des commandes testées en lab Linux.

  • Distinguer les usages de at et cron
  • Planifier une commande unique avec at
  • Lister la file d’attente avec atq
  • Supprimer une tâche planifiée avec atrm
  • Vérifier qu’une tâche a bien tourné
  • Éviter les erreurs classiques (service, droits, environnement)

at est utile quand une action doit être déclenchée plus tard, mais une seule fois :

  • relancer un service hors créneau de production ;
  • exécuter un script de nettoyage dans 15 minutes ;
  • lancer un contrôle d’intégrité cette nuit ;
  • programmer un rappel technique (mail, rapport, rotation).
  • Utilisez at pour une exécution ponctuelle.
  • Utilisez cron pour une exécution récurrente.

Exemple mental simple :

  • “Exécute ce script demain à 09:00” -> at
  • “Exécute ce script tous les jours à 09:00” -> cron
Fenêtre de terminal
# Vérifier que le service atd est actif
systemctl status atd --no-pager

Vous devez voir Active: active (running).

Dans ce lab, on planifie une écriture dans un fichier de sortie.

Fenêtre de terminal
mkdir -p /tmp/at-lab
printf '%s\n' 'echo "AT_OK" >> /tmp/at-lab/output.txt' > /tmp/at-lab/job.sh
at -f /tmp/at-lab/job.sh now + 2 minutes

Sortie attendue (exemple) :

warning: commands will be executed using /bin/sh
job 9 at Mon Apr 20 21:24:00 2026
Fenêtre de terminal
atq

Sortie attendue (exemple) :

9 Mon Apr 20 21:24:00 2026 a bob
  • première colonne : identifiant du job ;
  • date/heure : exécution prévue ;
  • dernier champ : utilisateur propriétaire.
Fenêtre de terminal
# Remplacez 9 par l'identifiant réel
atrm 9
atq

Si la file est vide, atq ne retourne rien.

Étape 4 : vérifier l’exécution quand vous ne supprimez pas le job

Section intitulée « Étape 4 : vérifier l’exécution quand vous ne supprimez pas le job »

Planifiez une tâche et laissez-la s’exécuter :

Fenêtre de terminal
at -f /tmp/at-lab/job.sh now + 1 minute

Après ~1 minute :

Fenêtre de terminal
cat /tmp/at-lab/output.txt

Vous devez voir au moins une ligne AT_OK.

  • Utilisez des chemins absolus dans les scripts appelés par at.
  • Préférez un script (at -f script.sh) à une commande complexe inline.
  • Journalisez la sortie (>> /var/log/... 2>&1) pour faciliter le diagnostic.
  • Testez la commande en direct avant de la planifier.
SymptômeCause probableCorrection
at: command not foundpaquet non installéinstaller le paquet at
job jamais exécutéatd inactifsudo systemctl enable --now atd
job présent mais pas d’effetscript invalide ou PATH incompletutiliser chemins absolus, tester le script
You do not have permissionpolitique at.allow/at.denyvérifier /etc/at.allow et /etc/at.deny
  • at planifie une tâche ponctuelle.
  • atq liste les tâches en attente.
  • atrm supprime une tâche planifiée.
  • Le service atd doit être actif.
  • En contexte admin/certif, at complète cron et timers.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn