at : Planifier des tâches ultérieurement
Table des matières
La commande at est un outil puissant sous Linux qui permet de planifier des tâches ponctuelles à exécuter ultérieurement.
Cela peut être particulièrement utile pour automatiser des actions à un moment précis dans le futur sans avoir à être connecté sur le système;
Dans cet article, nous allons voir l'utilisation de la commande "at" ainsi que des exemples concrets pour mieux comprendre son fonctionnement.
Contrairement au planificateur de tâches "cron", qui exécute des tâches de façon périodique (tous les jours à 22:00, tous les lundis à 5:00, toutes les 6 heures...) les tâches planifiées s'exécutent qu'une fois.
Si vous souhaitez plus d'informations sur le planificateur de tâches, consultez cron-et-crontab-le-planificateur-de-taches
Le service atd est souvent installé par défaut sur les distributions linux. Cependant, si tel n'est pas le cas, installez-le :
Fedora, RedHat et dérivées :
Debian et dérivées :
Gentoo :
Et on active et démarre le service :
Systemd :
OpenRC :
La commande at est interactive, elle peut être lancée en précisant la date d'exécution :
Pour exécuter la tâche à 17h :
On peut aussi demander à une période définie par rapport à maintenant :
On peut aussi définir une date et heure plus lointaine avec l'option -t au format YYYYMMDDHHMM (Ici 15h05 le 11 mars 2024 - 202403111505) :
A partir de là, un prompt indique que nous sommes prêt à taper des commandes qui seront exécutées :
Une fois qu'on a saisi la ou les commandes, on quitte le sous menu avec Ctrl+D
Au moment de la sortie, on a une information nous indiquant la date d'exécution de la tâche avec son numéro :
On peut lancer une commande sans rentrer dans le mode interactif de cette façon :
On peut aussi exécuter un fichier de script (ou une suite de commandes dans un fichier) via l'option -f :
Pour lister les tâches planifiées dans la file d'attente, on pourra utiliser :
Pour avoir des détails sur une tâche précise, on utilisera la commande suivante :
Remplacez JOB par le numéro du job.
Notez que vous n'avez pas QUE la commande mais aussi tout le contexte d'exécution.
Pour annuler une tâche, on utilisera la commande :
Remplacez JOB par le numéro du job.
Il est possible de vérifier si les tâches planifiées se sont bien lancées dans les logs.
Avec systemd :
Sinon, les informations sont stockées généralement dans /var/log/cron :
Introduction
La commande at est un outil puissant sous Linux qui permet de planifier des tâches ponctuelles à exécuter ultérieurement.
Cela peut être particulièrement utile pour automatiser des actions à un moment précis dans le futur sans avoir à être connecté sur le système;
Dans cet article, nous allons voir l'utilisation de la commande "at" ainsi que des exemples concrets pour mieux comprendre son fonctionnement.
Contrairement au planificateur de tâches "cron", qui exécute des tâches de façon périodique (tous les jours à 22:00, tous les lundis à 5:00, toutes les 6 heures...) les tâches planifiées s'exécutent qu'une fois.
Si vous souhaitez plus d'informations sur le planificateur de tâches, consultez cron-et-crontab-le-planificateur-de-taches
Installation
Le service atd est souvent installé par défaut sur les distributions linux. Cependant, si tel n'est pas le cas, installez-le :
Fedora, RedHat et dérivées :
Code BASH :
dnf install at
Debian et dérivées :
Code BASH :
apt install at
Gentoo :
Code BASH :
emerge -av sys-process/at
Et on active et démarre le service :
Systemd :
Code BASH :
systemctl enable --now atd
OpenRC :
Code BASH :
rc-update add atd /etc/init.d/atd start
Utilisation
Création de tâches
La commande at est interactive, elle peut être lancée en précisant la date d'exécution :
Pour exécuter la tâche à 17h :
Code BASH :
at 17:00
On peut aussi demander à une période définie par rapport à maintenant :
Code BASH :
at now + 30 minutes
On peut aussi définir une date et heure plus lointaine avec l'option -t au format YYYYMMDDHHMM (Ici 15h05 le 11 mars 2024 - 202403111505) :
Code :
at -t 202403111505
A partir de là, un prompt indique que nous sommes prêt à taper des commandes qui seront exécutées :
Code :
at>
Une fois qu'on a saisi la ou les commandes, on quitte le sous menu avec Ctrl+D
Au moment de la sortie, on a une information nous indiquant la date d'exécution de la tâche avec son numéro :
Code TEXT :
job 6 at Mon Jun 19 19:00:00 2023
On peut lancer une commande sans rentrer dans le mode interactif de cette façon :
Code BASH :
echo "ma commande" | at now + 5 minutes
On peut aussi exécuter un fichier de script (ou une suite de commandes dans un fichier) via l'option -f :
Code BASH :
at 21:00 -f /root/monscript.sh
Lister les tâches et voir les détails
Pour lister les tâches planifiées dans la file d'attente, on pourra utiliser :
Code BASH :
atq
Code TEXT :
4 Mon Jun 19 18:30:00 2023 a root 6 Mon Jun 19 19:00:00 2023 a root
Pour avoir des détails sur une tâche précise, on utilisera la commande suivante :
Code BASH :
at -c JOB
Remplacez JOB par le numéro du job.
Notez que vous n'avez pas QUE la commande mais aussi tout le contexte d'exécution.
Annuler des tâches
Pour annuler une tâche, on utilisera la commande :
Code BASH :
atrm JOB
Remplacez JOB par le numéro du job.
Logs des tâches
Il est possible de vérifier si les tâches planifiées se sont bien lancées dans les logs.
Avec systemd :
Code BASH :
journalctl -u atd
Code :
sept. 18 15:39:00 SERVER.LINUXTRICKS.LAN atd[6372]: Starting job 1 (a0000101af1273) for user 'root' (0)
sept. 18 15:39:00 SERVER.LINUXTRICKS.LAN atd[6372]: pam_unix(atd:session): session opened for user root(uid=0) by (uid=0)
sept. 18 15:45:00 SERVER.LINUXTRICKS.LAN atd[9125]: Starting job 3 (a0000301af1279) for user 'root' (0)
sept. 18 15:45:00 SERVER.LINUXTRICKS.LAN atd[9125]: pam_unix(atd:session): session opened for user root(uid=0) by (uid=0)
Sinon, les informations sont stockées généralement dans /var/log/cron :
Code :
Sep 18 15:39:00 SERVER atd[6372]: Starting job 1 (a0000101af1273) for user 'root' (0)
Sep 18 15:45:00 SERVER atd[9125]: Starting job 3 (a0000301af1279) for user 'root' (0)