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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn