Table of Contents

LINUX: Programmer l'exécution d'un programme avec at

Exécuter une commande à une heure précise

La commande s'utilise en deux temps.

Il faut donc d'abord indiquer à quelle heure on veut exécuter une commande, sous la forme HH:MM :

L'exécution des commandes est demandée à 14 h 17 aujourd'hui. Si on tape cela dans une console, on devrait voir ceci s'afficher :

$ at 14:17

  warning: commands will be executed using /bin/sh
  at>

at demande de taper les commandes que l'on veut exécuter à cette heure-là.

Pour cet exemple, on va demander de créer un fichier à 14 h 17 :

$ at 14:17

  warning: commands will be executed using /bin/sh
  at> touch fichier.txt
  at> <EOT>
  job 5 at Mon Nov 10 14:17:00 2010

Après avoir écrit la commande touch, at affiche à nouveau un prompt et vous demande une autre commande. On peut indiquer une autre commande à exécuter à la même heure… ou bien arrêter là. Dans ce cas, taper Ctrl + D (comme pour sortir d'un terminal). Le symbole <EOT> devrait alors s'afficher, et at s'arrêtera.

at affiche ensuite le numéro associé à cette tâche (à ce « job », comme il dit) et l'heure à laquelle il sera exécuté.

Exécuter une commande le lendemain

$ at 14:17 tomorrow

tomorrow signifie « demain ».

Exécuter une commande à une date précise

$ at 14:17 11/15/10

La date est au format américain, les numéros du jour et du mois sont donc inversés : 11/15/10. 11 correspond au mois (novembre) et 15 au numéro du jour !

Exécuter une commande après un certain délai

Il est possible d'exécuter une commande dans 5 minutes, 2 heures ou 3 jours sans avoir à écrire la date. Par exemple, pour exécuter la commande dans 5 minutes :

$ at now +5 minutes

… ce qui signifie « Dans maintenant (now) + 5 minutes ». Les mots-clés utilisables sont les suivants :

Un autre exemple :

 $ at now +2 weeks

… exécutera les commandes dans deux semaines.

atq et atrm : lister et supprimer les jobs en attente

Chaque fois qu'une commande est « enregistrée », at indique un numéro de job ainsi que l'heure à laquelle il sera exécuté.

Il est possible d'avoir la liste des jobs en attente avec la commande atq :

$ atq

  13        Mon Nov 10 14:44:00 2010 a mateo21
  12        Mon Nov 10 14:42:00 2010 a mateo21

Pour supprimer le job n° 13 utiliser atrm :

 $ atrm 13