Planifier des commandes Linux avec `at`
Traductions
Comme je prépare et exécute beaucoup de scripts, j’ai parfois besoin d’exécuter un script à une heure précise de la journée.
Lorsqu’un script ne doit être exécuté qu’une seule fois, cron
n’est pas une solution viable.
J’ai donc découvert le planificateur at
.
Vous devez d’abord l’installer, en utilisant apt
comme d’habitude pour les utilisateurs de debian, ubuntu ou autre dérivés :
$ sudo apt install at
Planifier l’exécution d’une commande
- utilisez la commande
at
avec une heure / date - saisissez les commandes à exécuter dans l’invite
- tapez CTRL+D pour quitter (^D)
$ at 9AM
warning: commands will be executed using /bin/sh
at> cd workspaces/github/dotfiles
at> git pull
at> < EOT >
job 1 at Sat Apr 16 09:00:00 2022
Cet exemple va récupérer le contenu d’un dépôt à 9h demain matin !
at
prend en charge de nombreuses spécifications de temps.
Voici un extrait de sa page de manuel :
At permet d’indiquer l’heure de lancement de manière assez complexe, en extension de la norme POSIX.2. Il accepte des spécifications de la forme HH:MM pour exécuter un travail à une heure donnée de la journée en cours (ou du lendemain si l’heure mentionnée est déjà dépassée). On peut aussi lui fournir l’un des arguments suivants : midnight (minuit), noon (midi), ou teatime (l’heure du thé, soit 16 heures). Il est également possible de fournir un suffixe du type AM (matin), ou PM (après-midi) avec une heure sur un cadran de 12 heures.
Les commandes sont exécutées avec le compte de l’utilisateur connecté, en utilisant un shell /bin/sh
.
Il utilisera les variables d’environnement disponibles du shell au moment où la commande at
est exécutée, et se placera dans le répertoire courant avant d’exécuter votre script.
Voir les commandes planifiées
$ atq
1 Sat Apr 16 09:00:00 2022 a jwittouck
Voir les détails d’une tâche
$ at -c 1
cd /home/jwittouck || {
echo 'Répertoire d'exécution inaccessible' >&2
exit 1
}
cd workspaces/github/dotfiles
git pull
Supprimer une tâche
$ atrm 1