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), outeatime
(16:00) - Un jour spécifique : pour planifier une tâche spécifique à plus de 24H, il faut ajouter une date sous la forme
MMDDYY
,MM/DD/YY
, ouDD.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.