28.3. At et Batch

Tandis que cron et anacron servent à programmer des tâches récurrentes, la commande at est utilisée pour programmer une tâche unique à un moment donné. La commande batch sert à programmer une tâche qui doit être exécutée une seule fois lorsque la moyenne de chargement du système descend en dessous de 0.8.

Pour utiliser at ou batch le paquetage RPM at doit être installé sur votre système et le service atd doit être en cours d'exécution. Pour savoir si le paquetage est installé, utilisez la commande rpm -q at. Pour savoir si le service est en cours d'exécution, utilisez la commande /sbin/service atd status.

28.3.1. Configuration des tâches At

Pour programmer une tâche qui ne sera exécutée qu'une fois à un moment donnez, entrez la commande at moment, où moment correspond au moment d'exécution de la commande.

L'argument moment peut prendre l'une des valeurs suivantes:

L'heure doit être spécifiée en premier, suivie de la date en option. Pour plus d'informations sur le format de l'heure, lisez le fichier texte /usr/share/doc/at-<version>/timespec.

Après avoir entré la commande at avec l'argument de temps, l'invite at> s'affiche. Entrez la commande à exécuter, appuyez sur la touche [Entrée] et tapez Ctrl-D. Vous pouvez spécifier plusieurs commandes en entrant chacune d'elles puis en tapant sur la touche [Entrée]. Après avoir tapé toutes les commandes, appuyez sur la touche [Entrée] afin d'afficher une ligne vide, puis tapez Ctrl-D. Un script shell peut également être saisi en appuyant sur la touche [Entrée] après chaque ligne du script et en tapant Ctrl-D sur une ligne vide pour quitter. Si un script est entré, le shell utilisé est celui qui est défini dans l'environnement SHELL de l'utilisateur, le shell de connexion de l'utilisateur ou /bin/sh (celui qui est trouvé en premier).

Si l'ensemble de commandes ou de scripts essaie d'afficher des informations dans la sortie standard, ces informations sont envoyées par courrier électronique à l'utilisateur.

Utilisez la commande atq pour afficher les tâches en attente. Reportez-vous à la Section 28.3.3 afin d'obtenir davantage d'informations.

L'utilisation de la commande at peut être restreinte. Reportez-vous à la Section 28.3.5 pour de plus amples informations.

28.3.2. Configuration des tâches Batch

Pour exécuter une seule fois une tâche spécifique lorsque la moyenne de chargement est inférieure à 0.8, utilisez la commande batch.

Une fois la commande batch saisie, l'invite at> s'affiche. Entrez la commande à exécuter, appuyez sur la touche [Entrée] et tapez Ctrl-D. Vous pouvez spécifier plusieurs commandes en entrant chacune d'elles suivie de [Entrée]. Après avoir tapé toutes les commandes, appuyez sur la touche [Entrée] afin d'afficher une ligne vide, puis tapez Ctrl-D. Un script shell peut également être saisi en appuyant sur la touche [Entrée] après chaque ligne du script et en tapant Ctrl-D sur une ligne vide pour quitter. Si un script est saisi, le shell utilisé est celui défini dans l'environnement SHELL de l'utilisateur, le shell de connexion de l'utilisateur ou /bin/sh (celui qui est trouvé en premier). L'ensemble de commandes ou de scripts est exécuté dès que la moyenne de chargement se situe en dessous de 0.8.

Si l'ensemble de commandes ou de scripts essaie d'afficher des informations dans la sortie standard, ces informations sont envoyées par courrier électronique à l'utilisateur.

Utilisez la commande atq pour afficher les tâches en attente. Reportez-vous à la Section 28.3.3 afin d'obtenir davantage d'informations.

L'utilisation de la commande batch peut être restreinte. Reportez-vous à la Section 28.3.5 pour obtenir des d'informations plus détaillées.

28.3.3. Affichage des tâches en attente

Pour afficher les tâches at et batch en attente, utilisez la commande atq. Elle affiche une liste des tâches en attente, une tâche par ligne. Chaque ligne se présente sous le format suivant: numéro de la tâche, date, heure, classe de la tâche et nom d'utilisateur. Les utilisateurs ne peuvent afficher que leurs propres tâches. Si le super-utilisateur (root) exécute la commande atq toutes les tâches de tous les utilisateurs sont affichées.

28.3.4. Options de ligne de commande supplémentaires

Parmi les options de ligne de commande supplémentaires pour at et batch on trouve:

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

Tableau 28-1. Options de ligne de commande at et batch

28.3.5. Contrôle de l'accès à At et Batch

Les fichiers /etc/at.allow et /etc/at.deny peuvent servir à limiter l'accès aux commandes at et batch. Le format de ces deux fichiers de contrôle d'accès requiert un nom d'utilisateur sur chaque ligne. Les espaces blancs n'y sont pas acceptés. Le démon at (atd) n'a pas à être redémarré si les fichiers de contrôle d'accès sont modifiés. Ces fichiers sont lus chaque fois qu'un utilisateur essaie d'exécuter les commandes at ou batch.

L'utilisateur root peut toujours exécuter les commandes at et batch indépendamment des fichiers de contrôle d'accès.

Si le fichier at.allow existe, seuls les utilisateurs qui y sont répertoriés peuvent utiliser at ou batch et le fichier at.deny n'est pas pris en considération.

Si le fichier at.allow n'existe pas, aucun utilisateur répertorié dans at.deny ne sont autorisés à utiliser ni at ni batch.

28.3.6. Démarrage et arrêt du service

Pour lancer le service at, utilisez la commande /sbin/service atd start. Pour arrêter le service, utilisez la commande /sbin/service atd stop. Nous vous recommandons de lancer le service au démarrage. Reportez-vous au Chapitre 14 pour en savoir plus sur le lancement automatique du service cron lors du démarrage.