Planifier des tâches avec la commande « at » sur Linux

Dans la gestion des systèmes Linux et plus particulièrement des serveurs, vous pouvez être amené à exécuter un certain nombre d’actions importantes au quotidien. Hors, pour vous faciliter la vie, il vous est possible de planifier des tâches sur Linux grâce à la commande at, pour qu’elles s’exécutent ponctuellement et à des moments bien précis. Voici comment faire.

La commande at sur Linux fait appel au démon atd pour planifier les tâches. Il est important de noter que cette commande permet une planification unique d’une tâche, contrairement à cron qui permet de planifier des tâches récurrentes.

Installer at

Le paquet at est installé par défaut sur la majorité des systèmes Linux. Cependant, vous pouvez-vous en assurer en vérifiant sa version, avec la ligne de code suivante :

at -V

Si la console vous affiche « commande introuvable », il faut l’installer puis démarrer son service.

sudo apt install at && sudo systemctl start atd

Syntaxe de la commande at

La syntaxe de la commande at  est relativement simple. Il faut indiquer, en paramètres, l’heure et la date d’exécution de la tâche.

at [OPTION...] heure/date

Lorsque vous utilisez la commande at pour planifier une tâche, le gestionnaire ouvre son shell dans lequel vous insérez les tâches à exécuter. Puis, vous pouvez lancer l’exécution à l’aide du raccourci clavier Ctrl + D.

Vous pouvez indiquer les variables de temps en suivant certains formats :

  • Une heure spécifique de la journée : On peut préciser le temps sous le format HH:MM. Si l’heure spécifiée est déjà passée, alors la tâche est exécutée le lendemain à la même heure
  • Un indicateur de temps : il existe des mots-clés reconnus qui peuvent être utilisés pour désigner l’heure comme noon (12:00)midnight (00:00), ou teatime (16:00)
  • Un jour spécifique : pour planifier une tâche spécifique à plus de 24H, il faut ajouter une date sous la forme MMDDYYMM/DD/YY, ou DD.MM.YY.
  • Une période spécifique dans un futur proche : Il est possible de préciser la période avec les mots-clés now, ou le signe + suivi de la période.

Si vous indiquez l’heure sans la date, la commande vérifiera si elle peut s’exécuter le jour même (au moment de sa validation) à l’heure indiquée. Si l’heure est déjà passée, alors la tâche s’exécutera plutôt le lendemain au temps indiqué.

Planifier une tâche avec la commande at (avec exemples)

Nous allons vous montrer quelques exemples pour exécuter une tâche avec la commande at sur Linux. Il faut noter que la commande ne vous affiche pas le retour de son exécution à l’écran. Par contre, vous pouvez lui demander de vous envoyer un mail à l’aide de l’option -m, après son exécution. Le mail est généralement situé à l’emplacement /var/spool/mail/$USER où $USER représente le nom de l’utilisateur ayant lancé la tâche.

Example 1 : exécuter une tâche à l’instant précis avec le retour par mail.

# at -m now 
at> echo "Execution commande at" 
at> <EOT>

N’oubliez pas d’appuyer sur Ctrl+D pour valider votre tâche.

Le contenu du mail est accessible depuis les logs avec la commande suivante (l’horodatage affiché concerne le mail) :

$ tail -f -n 13 /var/spool/mail/$USER

Exemple 2 : Exécuter une tâche dans x minutes ou x heures.

Cette syntaxe permet d’exécuter une tâche en ajoutant une durée à l’instant T.

Il est également possible d’exécuter un script (fichier) avec la commande. Pour le prochain exemple, nous avons écrit un script tache_cmd_at.sh qui va créer un dossier suivi de la date et l’heure de création. Voici le contenu du script affiché ci-dessous avec la commande cat.

Il est donc possible de lire la commande à exécuter depuis le fichier grâce à l’option -f et de l’exécuter dans 2 minutes.

$ at -m now +2min -f tache_cmd_at.sh

On peut voir le résultat en listant les dossiers avec ls.

Pour une exécution dans 2 h au lieu de 2 minutes, la commande devient la suivante :

$ at -m now +2 hours -f tache_cmd_at.sh 

Exemple 3 : exécuter une tâche à une date précise.

Pour exécuter une tâche à une date précuse, vous pouvez utilisr le format français DD.MM.YY. Par exemple, pour une tâche exécutée le 22/05/22 à 07h30 :

$ at 07:30 22.05.22 -f tache_cmd_at.sh

Lister les tâches planifiées

Une file d’attente stocke les tâches planifiées avec la commande at. Il est possible de les lister avec les commandes atq ou at -l. Le résultat comporte certains éléments :

  • Le numéro de job qui permet d’identifier la tâche
  • La date d’exécution de la tâche
  • L’heure exacte d’exécution de la tâche
  • Le nom de la file d’attente
  • Le nom de l’utilisateur ayant planifié la tâche

Supprimer des tâches planifiées

Il est bien entendu possible de supprimer une tâche planifiée. Pour cela, vous aurez besoin de son numéro unique pour y parvenir. La suppression se fait avec la commande atrm.

$ atrm 14

Vous pouvez ensuite afficher la liste des tâches pour vérifier si la suppression est effective.

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici