Menu Fermer

La commande at Linux : utilisation avec des exemples

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.

La commande at Linux : utilisation avec des exemples

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.

CommandeFonction
atpermet à l’utilisateur de programmer une tâche
atqliste les travaux en attente pour l’utilisateur connecté, ou pour tous les utilisateurs s’il est exécuté en tant que sudo
atrmsupprime les travaux en fonction du numéro de travail spécifié
batchdemande 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)
Les commandes liées à l’utilitaire at

L’utilisation de at a son propre format. Lorsque vous souhaitez planifier un travail, vous tapez dans votre terminal :

at [time] [date/jour]
L’heure est obligatoire, mais la date est facultative. Si vous n’entrez rien, le système fera une supposition basée sur la date actuelle et l’heure du système.

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
Comment utiliser la commande at sous Linux pour planifier des tâches

Le fichier se créé bien à la date prévue montrant bien qu’at exécute la tâche comme annoncée.

Comment utiliser la commande at sous Linux pour planifier des tâches

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 tempsDescription
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
nowIndique le jour et l’heure actuels et l’exécution immédiate
midnightIndique 00:00 (minuit)
noonIndiquant 12:00 PM
teatimeInterprété comme 16 heures
AMIndique l’heure avant 12h00
PMIndique l’heure après 12h00
todayLa journée en cours
tomorrowLe jour suivant le jour en cours
Les expressions de temps de la commande at

Par exemple pour exécuter, une commande à 15h :

echo "hello world" | at 3PM
Comment utiliser la commande at sous Linux pour planifier des tâches

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 :

Voir tous les travaux en file d'attente avec l'utilitaire at

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
Visualiser le contenu d'un travail at dans Linux

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
Supprimer une tâche planifiée avec atrm

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]