Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

21.2. « At » et « Batch »

Pendant que Cron est utilisé pour planifier des tâches récurrentes, l'utilitaire At est utilisé pour planifier une tâche ponctuelle à un moment spécifique et l'utilitaire Batch est utilisé pour planifier une tâche ponctuelle à exécuter lorsque la charge moyenne du système tombe sous 0.8.

21.2.1. Installer « At » et « Batch »

Pour déterminer si le paquet at est déjà installé sur votre système, veuillez exécuter la commande suivante :
rpm -q at
La commande retourne le nom complet du paquet at s'il est déjà installé ou vous notifie que le paquet n'est pas disponible.
Pour installer les paquets, veuillez utiliser la commande yum sous le format suivant en tant qu'utilisateur root :
yum install package
Par exemple, pour installer « At » et « Batch », veuillez saisir ce qui suit dans une invite de shell :
~]# yum install at
Pour obtenir davantage d'informations sur la manière d'installer de nouveaux paquets sur Red Hat Enterprise Linux, veuillez consulter la Section 8.2.4, « Installation de paquets ».

21.2.2. Exécuter le service « At »

Les tâches « At » et « Batch » sont prélevées par le service atd. Cette section fournit des informations sur la manière de démarrer, arrêter, et de redémarrer le service atd, et montre comment le configurer afin qu'il soit lancé automatiquement lors du démarrage. Pour obtenir davantage d'informations sur la manière de gérer des services système sur Red Hat Enterprise Linux 7 en général, veuillez consulter le Chapitre 9, Gérer les services avec systemd.

21.2.2.1. Démarrer et arrêter le service « At »

Pour déterminer si le service est en cours d'exécution, veuillez utiliser la commande suivante :
systemctl status atd.service
Pour exécuter le service atd dans la session actuelle, veuillez saisir ce qui suit dans l'invite de shell en tant qu'utilisateur root :
systemctl start atd.service
Pour configurer le service de manière à ce qu'il soit lancé automatiquement lors du démarrage système, veuillez utiliser la commande suivante en tant qu'utilisateur root :
systemctl enable atd.service

Note

Il est recommandé de configurer votre système de manière à lancer automatiquement le service atd lors du démarrage.

21.2.2.2. Arrêter le service « At »

Pour arrêter le service atd, veuillez saisir ce qui suit dans une invite de shell en tant qu'utilisateur root :
systemctl stop atd.service
Pour empêcher le service d'être lancé automatiquement au démarrage, veuillez utiliser la commande suivante en tant qu'utilisateur root :
systemctl disable atd.service

21.2.2.3. Redémarrer le service « At »

Pour redémarrer le service atd, veuillez saisir ce qui suit dans une invite de shell en tant qu'utilisateur root :
systemctl restart atd.service
Cette commande arrête le service et le lance à nouveau en une succession rapide.

21.2.3. Configurer une tâche « At »

Pour planifier une tâche ponctuelle à un moment particulier avec l'utilitaire At, veuillez procéder comme suit :
  1. Sur la ligne de commande, veuillez saisir la commande at TIME, où TIME représente l'heure à laquelle la commande doit être exécutée.
    L'argument TIME peut être défini à l'aide de l'un des formats suivants :
    • HH:MM indique l'heure et la minute exacte ; par exemple, 04:00 signifie 04h00.
    • midnight signifie 00h00.
    • noon signifie 12h00.
    • teatime signifie 16h00.
    • Format MONTHDAYYEAR ; par exemple, January 15 2012 signifie le 15ème jour du mois de janvier de l'année 2012. La valeur de l'année est optionnelle.
    • Formats MMDDYY, MM/DD/YY, ou MM.DD.YY ; par exemple, 011512 pour le 15ème jour du mois de janvier de l'année 2012.
    • now + TIMETIME est défini en tant que nombre entier et le type de valeur : minutes (« minutes »), heures (« hours »), jour (« days »), ou semaines (« weeks »). Par exemple, now + 5 days indique que la commande sera exécutée à la même heure dans cinq jours.
      L'heure doit être spécifiée en premier, suivie de la date optionnelle. Pour obtenir davantage d'informations sur le format de l'heure, veuillez consulter le fichier texte /usr/share/doc/at-<version>/timespec.
    Si l'heure spécifiée est déjà passée, la tâche sera exécutée au même moment le jour suivant.
  2. Définissez les commandes de la tâche dans l'invite at> affichée :
    • Veuillez saisir la commande que la tâche devra exécuter et appuyez sur Entrée. Optionnellement, répétez l'étape pour fournir des commandes multiples.
    • Saisissez un script shell à l'invite et appuyez sur Entrée après chaque ligne du script.
      La tâche utilisera l'ensemble du shell dans l'environnement SHELL de l'utilisateur, le shell de connexion de l'utilisateur, ou /bin/sh (en fonction de ce qui est trouvé en premier).
  3. Une fois terminé, veuillez appuyer sur Ctrl+D sur une ligne vide pour sortir de l'invite de commande.
Si l'ensemble des commande ou le script tente d'afficher des informations sur la sortie standard, la sortie sera envoyée par courrier électronique à l'utilisateur.
Pour afficher la liste des tâches en attente, utilisez la commande atq. Veuillez consulter la Section 21.2.5, « Afficher les tâches en attente » pour obtenir davantage d'informations.
Vous pouvez également limiter l'utilisation de la commande at. Pour obtenir davantage d'informations, veuillez consulter la Section 21.2.7, « Contrôle de l'accès à « At » et « Batch » ».

21.2.4. Configurer une tâche « Batch »

L'application Batch exécute des tâches ponctuelles définies lorsque la charge moyenne du système passe en-dessous de 0.8.
Pour définir une tâche « Batch », veuillez procéder comme suit :
  1. Sur la ligne de commande, saisir la commande batch.
  2. Définissez les commandes de la tâche dans l'invite at> affichée :
    • Veuillez saisir la commande que la tâche devra exécuter et appuyez sur Entrée. Optionnellement, répétez l'étape pour fournir des commandes multiples.
    • Saisissez un script shell à l'invite et appuyez sur Entrée après chaque ligne du script.
      Si un script est saisi, la tâche utilise l'ensemble du shell dans l'environnement SHELL de l'utilisateur, le shell de connexion de l'utilisateur, ou /bin/sh (en fonction de ce qui est trouvé en premier).
  3. Une fois terminé, veuillez appuyer sur Ctrl+D sur une ligne vide pour sortir de l'invite de commande.
Si l'ensemble des commande ou le script tente d'afficher des informations sur la sortie standard, la sortie sera envoyée par courrier électronique à l'utilisateur.
Pour afficher la liste des tâches en attente, utilisez la commande atq. Veuillez consulter la Section 21.2.5, « Afficher les tâches en attente » pour obtenir davantage d'informations.
Vous pouvez également limiter l'utilisation de la commande batch. Pour obtenir davantage d'informations, veuillez consulter la Section 21.2.7, « Contrôle de l'accès à « At » et « Batch » ».

21.2.5. Afficher les tâches en attente

Pour afficher les tâches At et Batch en attente, exécutez la commande atq. La commande atq affiche une liste des tâches en attente, avec chaque tâche sur une ligne séparée. Chaque ligne suit le numéro de la tâche, la date, l'heure, la classe de la tâche, et le format du nom d'utilisateur. Les utilisateur peuvent uniquement afficher leurs propres tâches. Si l'utilisateur root exécute la commande atq, toutes les tâches de tous les utilisateurs seront affichées.

21.2.6. Options de ligne de commande supplémentaires

Les options de ligne de commande supplémentaires des commandes at et batch incluent :

Tableau 21.1. Options de ligne de commande at et batch

OptionDescription
-fLit les commandes ou le script shell depuis un fichier au lieu de les spécifier à l'invite de commande.
-mEnvoie un courrier électronique à l'utilisateur une fois la tâche accomplie.
-vAffiche l'heure à laquelle la tâche sera exécutée.

21.2.7. Contrôle de l'accès à « At » et « Batch »

Vous pouvez restreindre l'accès aux commandes at et batch à l'aide des fichiers /etc/at.allow et /etc/at.deny. Ces fichiers de contrôle d'accès utilisent le même format en définissant un nom d'utilisateur sur chaque ligne. N'oubliez pas que les espaces ne sont pas autorisés dans ces fichiers.
Si le fichier at.allow existe, seuls les utilisateurs répertoriés dans celui-ci seront autorisés à utiliser at ou batch, et le fichier at.deny sera ignoré.
Si le fichier at.allow n'existe pas, les utilisateurs répertoriés dans le fichier at.deny ne seront pas autorisés à utiliser at ou batch.
Le démon at (atd) n'a pas besoin d'être redémarré si les fichiers de contrôle d'accès sont modifiés. Les fichiers de contrôle d'accès sont lus chaque fois qu'un utilisateur tente d'exécuter les commandes at ou batch.
L'utilisateur root peut toujours exécuter les commandes at et batch, indépendamment du contenu des fichiers de contrôle d'accès.