La commande at de Linux peut être utilisée pour programmer des tâches qui ne s’exécutent pas selon un calendrier régulier.
L’utilitaire At peut être comparé au concept de Crontab sous Linux, qui est un meilleur moyen d’automatiser les tâches récurrentes dans Linux.
Dans ce tutoriel, je vous montre comment vous pouvez utiliser la commande ‘at‘ pour planifier l’exécution de tâches et de commandes à un certain moment dans le futur.
Table des matières
- 1 Comment installer la commande at dans Linux
- 2 Comment utiliser la commande at sous Linux pour planifier des tâches
- 2.1 La syntaxe de la commande at
- 2.2 Piper un travail vers at
- 2.3 Saisir l’heure et la date en langage humain
- 2.4 Voir tous les travaux en file d’attente
- 2.5 Visualiser le contenu d’un travail
- 2.6 Supprimer une tâche planifiée avec atrm
- 2.7 Envoyer d’une notification par courrier électronique en cas d’exécution
- 2.8 Exécuter un travail lorsque la charge du processeur passe en dessous d’un certain seuil
- 3 Liens
Comment installer la commande at dans Linux
Pour installer at dans les distributions Linux à base Debian comme Ubuntu, Linux Mint, ElementOS, etc.
Utilisez APT :
sudo apt install at
Pour les distributions Linux à base Redhat comme RHL, Fedora, utilisez yum :
sudo yum install at
Comment utiliser la commande at sous Linux pour planifier des tâches
La syntaxe de la commande at
L’utilitaire ‘at’ est en fait une série de commandes qui fonctionnent ensemble pour planifier des tâches. Comme je l’ai déjà mentionné, at est préférable pour les situations où votre tâche est plus “unique” que récurrente.
Voici un tableau avec certaines des commandes de base associées à at.
Commande | Fonction |
---|---|
at | permet à l’utilisateur de programmer une tâche |
atq | liste les travaux en attente pour l’utilisateur connecté, ou pour tous les utilisateurs s’il est exécuté en tant que sudo |
atrm | supprime les travaux en fonction du numéro de travail spécifié |
batch | demande au système de n’exécuter le travail à l’heure spécifiée que si la charge du système est en dessous d’un certains seuil (charge moyenne <1,5) |
L’utilisation de at a son propre format. Lorsque vous souhaitez planifier un travail, vous tapez dans votre terminal :
at [time] [date/jour]
Par exemple pour créer une tâche dans les 5 minutes :
at now + 5 minutes
Cela va ouvrir l’interface d’at, saisissez les différentes commandes.
Une fois terminé, tapez
CTRL+D pour sauvegarder et quitter.
Quand la tâche est validée, le message <EOT> s’affiche et le numéro du travail ‘Job 3’.
<at> <EOT>
<at> job 3 at Fri May 26 17:08:00 2023
Le fichier se créé bien à la date prévue montrant bien qu’at exécute la tâche comme annoncée.
Piper un travail vers at
Planifiez un travail sans l’invite interactive at en transmettant des commandes à at et en spécifiant la durée d’exécution. Utilisez echo ou printf pour transmettre les commandes à at.
Par exemple :
echo "<commande à exécuter>" | at [durée d'exécution]
Pour programmer une tâche at qui envoie la sortie de la commande echo dans un fichier, utilisez :
echo "hello" >> exemple.txt | at now
Saisir l’heure et la date en langage humain
Vous disposez de nombreuses options pour saisir l’heure. Contrairement à crontab et à son système d’astérisques quelque peu délicat, ‘at’ reconnaît la saisie “humaine” de manière plus efficace.
at now + 5 minutes
Expressions de temps | Description |
YYMMDDhhmm[.ss] | Spécifier une année, un mois, un jour, une heure, une minute et éventuellement une seconde |
CCYYMMDDhhmm[.ss] | Spécifiez une année complète, un mois, un jour, une heure, une minute et éventuellement des secondes |
now | Indique le jour et l’heure actuels et l’exécution immédiate |
midnight | Indique 00:00 (minuit) |
noon | Indiquant 12:00 PM |
teatime | Interprété comme 16 heures |
AM | Indique l’heure avant 12h00 |
PM | Indique l’heure après 12h00 |
today | La journée en cours |
tomorrow | Le jour suivant le jour en cours |
Par exemple pour exécuter, une commande à 15h :
echo "hello world" | at 3PM
Spécifiez une expression de temps relatif en ajoutant un signe plus (+), la quantité et l’un des éléments suivants :
minutes
hours
days
weeks
months
years
Voir tous les travaux en file d’attente
L’utilitaire at vous permet de voir quels travaux sont encore dans la file d’attente et en attente d’exécution. Il existe deux façons d’afficher les travaux en attente :
Exécutez la commande at avec l’option -l :
Vous pouvez aussi utiliser l’utilitaire atq. pour vérifier les tâches programmées.
Elle répertorie tous les travaux actuellement programmés pour l’utilisateur connecté. Pour voir tous les travaux sur le système, vous devrez peut-être utiliser des privilèges élevés.
Pour obtenir la liste des travaux en attente de tous les utilisateurs, exécutez la commande avec sudo.
sudo atq
Visualiser le contenu d’un travail
L’option -c permet d’afficher le contenu d’une tâche précédemment programmée. Cette option est utile si vous avez oublié la nature du travail ou si vous souhaitez vérifier l’heure à laquelle il a été programmé.
La syntaxe suivante permet d’afficher le contenu d’un travail at programmé :
at -c [numéro_travail]
Obtenez le numéro de la tâche en exécutant d’abord la commande atq pour dresser la liste de toutes les tâches en attente.
Par exemple :
at -c 5
Supprimer une tâche planifiée avec atrm
Pour supprimer des tâches planifiées, spécifiez l’option -r ou exécutez la commande atrm avec l’ID de la tâche.
Vous pouvez obtenir l’ID du travail en exécutant atq ou en utilisant l’option -l.
Dans l’exemple suivant, nous avons supprimé la tâche 6 :
atrm 6
ou son équivalent :
at -r 6
Envoyer d’une notification par courrier électronique en cas d’exécution
Par défaut, l’utilitaire at envoie des notifications par courrier électronique pour les travaux terminés. Les notifications par courrier électronique nécessitent une adresse de courrier électronique fonctionnelle configurée pour votre compte utilisateur, et le système doit être en mesure d’envoyer des courriers électroniques.
Pour demander à at d’envoyer des notifications par courrier électronique à la fin d’un travail, même s’il n’y a pas de sortie, spécifiez l’option -m.
rm monfichier.txt | at -m tomorrow
La commande ci-dessus planifie le travail pour le lendemain à l’heure actuelle. Lorsqu’il est terminé, l’utilitaire at avertit l’utilisateur en utilisant l’adresse électronique configurée pour l’utilisateur.
Pour éviter de recevoir des notifications par courrier électronique concernant les travaux terminés, spécifiez l’option -M lors de la programmation d’un travail at.
Par exemple :
echo "shutdown -h now" | at -M 00:00
Par exemple :
Exécuter un travail lorsque la charge du processeur passe en dessous d’un certain seuil
Les travaux par lots sont exécutés lorsque la charge moyenne du processeur passe en dessous de 1,5 par défaut.
La méthode de saisie des travaux par lots est identique à la méthode ‘at’, sauf qu’il n’est pas nécessaire de spécifier une heure.
batch
echo "Hello world !" >> hello.txt
Si vous souhaitez modifier le seuil de charge, vous pouvez le faire à l’aide de la commande suivante :
atd -l [n]
Liens
- Systemd : Configuration et fonctionnement des services Linux (daemon)
- Comment fonctionnement les services init.d Linux
- Comment créer un service Linux (systemd)
- Systemctl Linux : utilisation et exemples
- Comment démarrer, arrêter, redémarrer un service sur Linux
- Comment utiliser journalctl pour voir les journaux Linux dans systemd
- Quels sont les journaux Linux de /var/log/ et comment les lire
- Crontab et cron Linux : utilisations et exemples