Planification ponctuelle avec at

LinuxBeginner
Pratiquer maintenant

Introduction

Alors que cron convient parfaitement aux tâches récurrentes — quotidiennes ou horaires, par exemple — il est parfois nécessaire de planifier une tâche qui ne s’exécutera qu’une seule fois, à un moment précis dans le futur. Vous pouvez par exemple vouloir redémarrer un service à 2 h du matin ou créer un instantané d’une base de données dans 30 minutes.

Pour ces tâches ponctuelles, Linux fournit l’utilitaire at.

La commande at lit des commandes depuis l’entrée standard ou depuis un fichier, puis les exécute ultérieurement. Elle est utile lorsque la tâche doit être différée sans être répétée, contrairement au modèle de planification récurrente de cron.

La différence conceptuelle principale est donc simple : cron décrit des planifications répétitives, tandis que at place une tâche ponctuelle future dans une file d’attente. Les deux outils servent à automatiser des tâches, mais ils répondent à des besoins de planification différents.

Dans ce laboratoire, vous allez :

  1. Installer les prérequis : vérifier que l’utilitaire at est installé et que son démon est en cours d’exécution.
  2. Planifier une tâche : utiliser at pour placer une commande dans la file d’attente en vue de son exécution ultérieure.
  3. Examiner la file d’attente : utiliser atq pour lister les tâches en attente.
  4. Gérer les tâches : utiliser atrm pour supprimer une tâche de la file d’attente.

Installer l’utilitaire at

La commande at n’est pas toujours installée par défaut dans toutes les distributions Linux. Commencez par vérifier qu’elle est présente et que son service d’arrière-plan est en cours d’exécution.

Comme cron, at dépend d’un démon. La commande que vous saisissez crée la définition d’une tâche dans la file d’attente, puis le service d’arrière-plan exécute cette tâche au moment prévu.

  1. Installez le paquet :
sudo apt-get install -y at
  1. Le système at s’appuie sur un démon d’arrière-plan appelé atd pour exécuter les commandes planifiées. Démarrez le service :
sudo service atd start
  1. Vérifiez que le service est actif :
sudo service atd status

La sortie doit indiquer que atd est en cours d’exécution.

Planifier une tâche

Maintenant que le système est prêt, vérifiez que at fonctionne en planifiant une tâche simple qui créera un fichier dans 5 minutes.

Pour commencer, exécutez la commande at suivie de l’heure souhaitée :

at now + 5 minutes

L’invite devient at>, ce qui indique que la commande attend votre saisie. Entrez la commande à exécuter :

Cette interface diffère de celle de cron, car at recueille interactivement le texte de la commande de la future tâche. Vous rédigez en quelque sorte le contenu d’une tâche ponctuelle, puis vous l’envoyez dans la file d’attente.

echo "Hello LabEx" > /home/labex/project/hello.txt

Enregistrer et quitter :

  • Appuyez sur Ctrl + D.

Vous devriez voir <EOT> (End of Transmission, fin de transmission) ainsi qu’un message de confirmation similaire à job 1 at ....

Cela confirme que votre tâche a été envoyée dans la file d’attente.

Lister les tâches en attente (atq)

Après avoir planifié une tâche, vous pouvez vérifier qu’elle se trouve bien dans la file d’attente ou retrouver son ID de tâche.

La commande qui permet d’afficher la file d’attente est atq :

atq

La sortie suit généralement ce format : 1 Mon Oct 23 10:05:00 2023 a labex

Détail des champs :

  • 1 : l’ID de la tâche. Vous aurez besoin de ce numéro pour supprimer la tâche.
  • Date/heure : le moment prévu pour l’exécution de la tâche.
  • Utilisateur : l’utilisateur auquel la tâche appartient.

L’affichage de la file d’attente est important, car il est facile d’oublier une tâche après l’avoir planifiée. atq vous permet d’examiner les tâches en attente avant leur exécution.

Si la file d’attente est vide, la tâche a peut-être déjà été exécutée ou n’a peut-être pas été envoyée correctement.

Annuler une tâche (atrm)

Si vous changez d’avis ou constatez une erreur, vous pouvez supprimer une tâche de la file d’attente avant son exécution.

Utilisez la commande atrm suivie de l’ID de la tâche.

Commencez par vérifier l’ID de la tâche avec atq — il s’agissait probablement de 1 à l’étape précédente. Exécutez ensuite :

atrm 1

Vérifiez maintenant que la file d’attente est vide :

atq

La commande ne doit rien afficher. Cela confirme que la tâche a été annulée. Aucun fichier ne sera créé.

Cette étape d’annulation montre que les tâches placées dans la file d’attente sont des objets gérables, et non de simples commandes exécutées sans possibilité d’intervention. Vous pouvez les examiner, les identifier grâce à leur ID et les supprimer avant leur exécution si votre plan change.

Résumé

Dans ce laboratoire, vous avez appris à gérer des tâches ponctuelles :

  1. Installation : configurer at et atd.
  2. Planification (at) : utiliser une syntaxe telle que at now + 5 minutes pour placer des commandes futures dans la file d’attente.
  3. Affichage (atq) : examiner la file d’attente afin de voir les ID des tâches en attente et leurs heures d’exécution.
  4. Suppression (atrm) : supprimer des tâches précises de la file d’attente à l’aide de leur ID.

Utilisez cron pour les planifications récurrentes et at pour les exécutions uniques et différées.