Comment utiliser at et batch sur Linux pour planifier des commandes 1

Comment utiliser at et batch sur Linux pour planifier des commandes

Si vous souhaitez planifier un travail Linux qui ne se produira qu’une seule fois, cron est exagéré. La at la famille de commandes est ce dont vous avez besoin! Et si vous souhaitez exécuter des processus uniquement lorsque votre système dispose de ressources gratuites, vous pouvez utiliser batch.

Comment planifier des travaux Linux

La cron le démon maintient une liste de travaux exécutés à des moments précis. Ces tâches et programmes s’exécutent en arrière-plan aux heures planifiées. Cela vous offre une grande flexibilité pour la planification des tâches qui doivent être répétées. Que vous deviez exécuter une tâche une fois par heure, à une heure précise chaque jour, ou une fois par mois ou par an, vous pouvez la configurer dans cron.

Cependant, cela n’aide pas si vous souhaitez planifier une tâche à exécuter une seule fois. Bien sûr, vous pouvez le configurer dans cron, mais vous devez ensuite vous rappeler de revenir en arrière et de supprimer le entrée crontab après l’exécution de la tâche, ce qui n’est pas pratique.

Avec Linux, si vous êtes aux prises avec un problème, c’est presque une garantie que quelqu’un d’autre a également lutté avec. Heureusement, comme les systèmes d’exploitation de type Unix existent depuis si longtemps, il y a aussi une excellente chance que quelqu’un ait créé une solution à votre problème.

Pour le problème décrit ci-dessus, ils ont, et cela s’appelle at.

Bientôt: Comment planifier des tâches sous Linux: une introduction aux fichiers Crontab

Installation de la commande at

Nous avons dû installer at sur Ubuntu 18.04 et Manjaro 18.1.0 (il était déjà installé sur Fedora 31).

À installer at sur Ubuntu, utilisez cette commande:

sudo apt-get install at

Comment utiliser at et batch sur Linux pour planifier des commandes 2

Une fois l’installation terminée, vous pouvez démarrer le at démon avec cette commande:

sudo systemctl enable --now atd.service

Comment utiliser at et batch sur Linux pour planifier des commandes 3

Sur Manjaro, vous installez at avec cette commande:

sudo pacman -Sy at

Comment utiliser at et batch sur Linux pour planifier des commandes 4

Une fois l’installation terminée, tapez cette commande pour démarrer le at démon:

sudo systemctl enable --now atd.service

Comment utiliser at et batch sur Linux pour planifier des commandes 5

Sur n’importe quelle distribution, vous pouvez taper cette commande pour vous assurer que le atd le démon est en cours d’exécution:

ps -e | grep atd

Comment utiliser at et batch sur Linux pour planifier des commandes 6

Comment utiliser la commande at de manière interactive

Utiliser at, vous devez lui attribuer une date et une heure d’exécution. Il y a une grande flexibilité dans la façon dont vous pouvez les écrire, ce que nous aborderons plus loin dans cet article.

Cependant, même si nous allons utiliser at de manière interactive, vous devez fournir la date et l’heure à l’avance. Si vous n’incluez rien sur la ligne de commande ou si vous tapez quelque chose qui n’est pas une date et une heure, at répond par « Temps brouillé », comme indiqué ci-dessous:

at
at banana

Comment utiliser at et batch sur Linux pour planifier des commandes 7

Les dates et heures peuvent être explicites ou relatives. Par exemple, disons que vous voulez qu’une commande s’exécute dans une minute. at sait ce que signifie «maintenant», vous pouvez donc utiliser now et ajoutez-y une minute, comme ceci:

at now + 1 minute

Comment utiliser at et batch sur Linux pour planifier des commandes 8

at imprime un message et un at invite et attend que vous saisissiez les commandes que vous souhaitez planifier. Tout d’abord, considérez le message, comme indiqué ci-dessous:

Comment utiliser at et batch sur Linux pour planifier des commandes 9

Il vous dit at lance une instance de sh coquille et volonté exécuter les commandes à l’intérieur. Vos commandes ne seront pas exécutées dans le shell Bash, qui est compatible avec le sh shell mais a un ensemble de fonctionnalités plus riche.

Si vos commandes ou scripts essaient d’utiliser une fonction ou une fonctionnalité fournie par Bash, mais sh non, ils échoueront.

Il est facile de tester si vos commandes ou scripts s’exécuteront dans sh. Utilisez le sh commande pour démarrer un sh coquille:

sh

Comment utiliser at et batch sur Linux pour planifier des commandes 10

L’invite de commande se transforme en signe dollar ($), et vous pouvez maintenant exécuter vos commandes et vérifier qu’elles fonctionnent correctement.

Pour revenir au shell Bash, tapez le exit commander:

exit

Vous ne verrez aucune sortie standard ou messages d’erreur des commandes. C’est parce que le sh shell se lance en tâche d’arrière-plan et s’exécute sans aucune sorte d’interface d’écran.

Toute sortie des commandes, bonne ou mauvaise, vous est envoyée par e-mail. Il est envoyé via le système de messagerie interne à quiconque exécute le at commander. Cela signifie que vous devez installer et configurer ce système de messagerie interne.

De nombreux systèmes Linux (la plupart) n’ont pas de système de messagerie interne car il en est rarement nécessaire. Ceux qui utilisent généralement un système comme envoyer un mail ou suffixe. Si votre système ne dispose pas d’un système de messagerie interne, vous pouvez faire écrire des scripts dans des fichiers ou rediriger la sortie vers des fichiers pour ajouter une journalisation.

Si la commande ne génère aucune sortie standard ou message d’erreur, vous ne recevrez de toute façon pas d’e-mail. De nombreuses commandes Linux indiquent le succès via le silence, donc dans la plupart des cas, vous ne recevrez pas d’e-mail.

Bientôt: Que sont stdin, stdout et stderr sous Linux?

Maintenant, il est temps de taper une commande dans at. Pour cet exemple, nous utiliserons un petit fichier de script appelé sweep.sh qui supprime le *.bak, *.tmp, et *.o des dossiers. Tapez le chemin d’accès à la commande, comme indiqué ci-dessous, puis appuyez sur Entrée.

Comment utiliser at et batch sur Linux pour planifier des commandes 11

Une autre invite de commande apparaît et vous pouvez ajouter autant de commandes que vous le souhaitez. Il est généralement plus pratique d’avoir vos commandes dans un seul script et d’appeler simplement ce script de l’intérieur at.

Appuyez sur Ctrl + D pour dire at vous avez terminé d’ajouter des commandes. at affiche , ce qui signifie fin de transmission. On vous indique le numéro de la tâche et la date à laquelle l’exécution de la tâche est planifiée, comme indiqué ci-dessous:

Comment utiliser at et batch sur Linux pour planifier des commandes 12

Une fois le travail exécuté, saisissez ce qui suit pour vérifier votre courrier interne:

mail

Comment utiliser at et batch sur Linux pour planifier des commandes 13

S’il n’y a pas de courrier, vous devez assumer le succès. Bien sûr, dans ce cas, vous pouvez vérifier et voir si le *.bak , *.tmp, et *.o les fichiers ont été supprimés pour confirmer que la commande a fonctionné.

Tapez ce qui suit pour exécuter à nouveau le tout:

at now + 1 minute

Comment utiliser at et batch sur Linux pour planifier des commandes 14

Au bout d’une minute, saisissez ce qui suit pour revérifier votre courrier:

mail

Comment utiliser at et batch sur Linux pour planifier des commandes 15

Hé, nous avons du courrier! Pour lire le message numéro un, appuyez sur 1, puis appuyez sur Entrée.

Comment utiliser at et batch sur Linux pour planifier des commandes 16

Nous avons reçu un e-mail de at car les commandes du script ont généré des messages d’erreur. Dans cet exemple, il n’y avait aucun fichier à supprimer car lorsque nous avons exécuté le script précédemment, il les a supprimés.

Appuyez sur D + Entrée pour supprimer l’e-mail et Q + Entrée pour quitter le programme de messagerie.

Formats de date et d’heure

Vous disposez d’une grande flexibilité en ce qui concerne les formats d’heure que vous pouvez utiliser at. Voici quelques exemples:

  • Courir à 11h00:
    • at 11:00 AM
  • Courir à 11h00 demain:
    • at 11:00 AM tomorrow
  • Exécuter à 11 h 00 ce jour-là la semaine prochaine:
    • at 11:00 AM next week
  • Exécutez à ce moment, ce jour-là, la semaine prochaine:
    • at next week
  • Courir à 11h00 vendredi prochain:
    • at 11:00 AM next fri
  • Exécutez à cette heure vendredi prochain:
    • at next fri
  • Exécution à 11 h 00 à cette date, le mois prochain:
    • at 11:00 AM next month
  • Exécution à 11h00 à une date précise:
    • at 11:00 AM 3/15/2020
  • Exécutez dans 30 minutes à partir de maintenant:
    • at now + 30 minutes
  • Exécutez dans deux heures à partir de maintenant:
    • at now + 2 hours
  • Courir à cette heure demain:
    • at tomorrow
  • Exécutez à cette heure le jeudi:
    • at thursday
  • Courir à 12h00:
    • at midnight
  • Courir à 12h00:
    • at noon
  • Si vous êtes britannique, vous pouvez même programmer une commande à exécuter à l’heure du thé (16 h):
    • at teatime

Consulter la file d’attente des travaux

Vous pouvez taper le atq pour afficher la file d’attente des travaux planifiés, comme indiqué ci-dessous.

Comment utiliser at et batch sur Linux pour planifier des commandes 17

Pour chaque commande de la file d’attente, atq affiche les informations suivantes:

  • ID de poste
  • Date prévue
  • Heure prévue
  • Mettre en file d’attente le travail. Les files d’attente sont étiquetées «a», «b», etc. Tâches normales avec lesquelles vous planifiez at aller dans la file d’attente «a», tandis que les tâches que vous planifiez avec batch (traité plus loin dans cet article) aller dans la file d’attente «b».
  • La personne qui a planifié le travail.

Utilisation de at sur la ligne de commande

Vous n’êtes pas obligé d’utiliser at interactivement; vous pouvez également l’utiliser sur la commande. Cela facilite l’utilisation de scripts internes.

Vous pouvez diriger des commandes vers at, comme ça:

echo "sh ~/sweep.sh" | at 08:45 AM

Comment utiliser at et batch sur Linux pour planifier des commandes 18

Le travail est accepté et planifié par at, et le numéro de travail et la date d’exécution sont indiqués comme auparavant.

Bientôt: Comment utiliser les tuyaux sous Linux

Utilisation de at avec des fichiers de commandes

Vous pouvez également stocker une séquence de commandes dans un fichier, puis la transmettre à at. Cela peut être un fichier de commandes en texte brut – il n’est pas nécessaire qu’il s’agisse d’un script exécutable.

Vous pouvez utiliser le -f (fichier) de la manière suivante pour passer un nom de fichier à at:

at now + 5 minutes -f clean.txt

Comment utiliser at et batch sur Linux pour planifier des commandes 19

Vous pouvez obtenir le même résultat si vous redirigez le fichier vers at:

at now + 5 minutes < clean.txt

Comment utiliser at et batch sur Linux pour planifier des commandes 20

Suppression des travaux planifiés de la file d’attente

Pour supprimer un travail planifié de la file d’attente, vous pouvez utiliser le atrm commander. Si vous voulez d’abord voir la file d’attente pour trouver le numéro du travail que vous souhaitez supprimer, vous pouvez utiliser atq . Ensuite, utilisez ce numéro de travail avec atrm, comme indiqué ci-dessous:

atq
atrm 11
atq

Comment utiliser at et batch sur Linux pour planifier des commandes 21

Comment afficher une vue détaillée des travaux

Comme nous l’avons mentionné précédemment, vous pouvez planifier des tâches loin dans le futur. Parfois, vous pourriez oublier ce qu’un travail va faire. La atq La commande vous montre les travaux dans la file d’attente, mais pas ce qu’ils vont faire. Si vous souhaitez voir une vue détaillée d’un travail, vous pouvez utiliser le -c (chat) option.

Tout d’abord, nous utiliserons atq pour trouver le numéro de poste:

atq

Comment utiliser at et batch sur Linux pour planifier des commandes 22

Maintenant, nous allons utiliser le travail numéro 13 avec le -c option:

at -c 13

Comment utiliser at et batch sur Linux pour planifier des commandes 23

Voici une ventilation des informations que nous obtenons sur le poste:

  • Première ligne: Cela nous indique que les commandes seront exécutées sous le sh coquille.
  • Deuxième ligne: Nous voyons que les commandes s’exécuteront avec un ID d’utilisateur et de groupe de 1 000. Ce sont les valeurs de la personne qui a exécuté le at commander.
  • Troisième ligne: La personne qui reçoit les e-mails atenvoie.
  • Quatrième ligne: La Masque utilisateur est 22. C’est le masque utilisé pour définir les autorisations par défaut pour tous les fichiers créés dans ce sh session. Le masque est soustrait de 666, ce qui nous donne 644 (l’équivalent octal de rw-r--r--).
  • Données restantes: La majorité sont des variables d’environnement.

Comment utiliser at et batch sur Linux pour planifier des commandes 24

  • Résultats d’un test. Un test vérifie que le répertoire d’exécution est accessible. Si ce n’est pas le cas, une erreur est générée et l’exécution du travail est abandonnée.
  • Les commandes à exécuter. Ils sont répertoriés et le contenu des scripts planifiés s’affiche. Notez que bien que le script de notre exemple ci-dessus ait été écrit pour s’exécuter sous Bash, il sera toujours exécuté dans un sh coquille.

La commande batch

La batch commander fonctionne de la même manière à la at commande, mais avec trois différences significatives:

  1. Vous ne pouvez utiliser que batch commande de manière interactive.
  2. Plutôt que de planifier l’exécution des travaux à un moment précis, vous les ajoutez à la file d’attente et batch La commande les exécute lorsque la charge moyenne du système est inférieure à 1,5.
  3. En raison de ce qui précède, vous ne spécifiez jamais une date et une heure avec le batch commander.

Lorsque vous utilisez le batch commande, vous l’appelez par son nom sans paramètres de ligne de commande comme ceci:

batch

Comment utiliser at et batch sur Linux pour planifier des commandes 25

Ensuite, ajoutez des tâches comme vous le feriez avec le at commander.

Contrôle de l’accès à la commande at

La at.allow et at.deny les fichiers contrôlent qui peut utiliser at famille de commandes. Ceux-ci sont situés dans le /etc annuaire. Par défaut, seul le at.deny le fichier existe et il est créé lorsque at est installé.

Voici comment cela fonctionne:

  • at.deny: Répertorie les applications et entités qui ne peuvent pas utiliser at pour planifier des travaux.
  • at.allow: Listes qui peuvent utiliser at pour planifier des travaux. Si la at.allow le fichier n’existe pas, at utilise uniquement le at.deny fichier.

Par défaut, tout le monde peut utiliser at. Si vous souhaitez limiter les utilisateurs qui peuvent l’utiliser, utilisez le at.allow fichier pour lister ceux qui le peuvent. C’est plus facile que d’ajouter tous ceux qui ne peuvent pas utiliser at à la at.deny fichier.

Voici ce que le at.deny le fichier ressemble à:

sudo less /etc/at.deny

Comment utiliser at et batch sur Linux pour planifier des commandes 26

Le fichier répertorie les composants du système d’exploitation qui ne peuvent pas utiliser at. Beaucoup d’entre eux sont empêchés de le faire pour des raisons de sécurité, vous ne voulez donc pas en supprimer du fichier.

Comment utiliser at et batch sur Linux pour planifier des commandes 27

Maintenant, nous allons éditer le at.allow fichier. Nous allons ajouter dave et mary, mais personne d’autre ne sera autorisé à utiliser at.

Tout d’abord, nous tapons ce qui suit:

sudo gedit /etc/at.allow

Comment utiliser at et batch sur Linux pour planifier des commandes 28

Dans l’éditeur, nous ajoutons les deux noms, comme indiqué ci-dessous, puis enregistrons le fichier.

"Dave" et "Mary" ajoutés à gedit.

Si quelqu’un d’autre essaie d’utiliser at, on lui dira qu’il n’a pas la permission. Par exemple, disons un utilisateur nommé eric tape ce qui suit:

at

Il serait refusé, comme indiqué ci-dessous.

Comment utiliser at et batch sur Linux pour planifier des commandes 29

Encore, eric n’est pas dans le at.deny fichier. Dès que vous mettez quelqu’un dans le at.allow fichier, tout le monde se voit refuser l’autorisation d’utiliser at.

Idéal pour les ponctuels

Comme vous pouvez le voir, les deux at et batch sont idéales pour les tâches que vous ne devez exécuter qu’une seule fois. Encore une fois, en bref:

  • Lorsque vous devez faire quelque chose qui n’est pas un processus régulier, planifiez-le avec at.
  • Si vous souhaitez exécuter une tâche uniquement lorsque la charge système est suffisamment faible, utilisez batch.

Soutenez notre effort ❤️

Si vous avez apprécié cet article, pensez à laisser un pourboire pour nous aider à continuer à publier du contenu de qualité.

Paiement sécurisé sur PayPal
Moyens I/O Staff est une équipe de rédacteurs spécialisés, passionnés par la technologie, l’innovation et les usages numériques. Forts d’une expertise pointue en IA, applications mobiles, gaming et tendances digitales, nous produisons un contenu rigoureux, vérifié et utile. Notre mission : vous offrir une information fiable et claire pour mieux naviguer dans le monde numérique en constante évolution. Découvrez les avis de nos lecteurs sur Trustpilot.