GNU/Linux >> Tutoriels Linux >  >> Linux

Planifier des travaux sous Linux avec la commande 'at'

La commande at sous Linux peut être utilisée pour planifier des travaux qui ne s'exécutent pas selon un calendrier régulier.

At peut être comparé au concept de Crontab sous Linux, qui est un meilleur moyen d'automatiser les tâches récurrentes.

Dans ce didacticiel, je vais montrer comment vous pouvez utiliser la "commande at" pour planifier l'exécution de tâches et de commandes à un certain moment dans le futur.

Installation à la commande sous Linux

Avant de commencer, vous devez vérifier si "at" est installé sur votre système. Il n'est pas installé par défaut sur tous les systèmes d'exploitation.

Vous pouvez le vérifier en tapant :

at -V

Si le logiciel est déjà installé, cela renverra le numéro de version. Sinon, il peut être installé sur les systèmes basés sur Debian en tapant :

sudo apt install at

Si vous utilisez une distribution Linux différente, vous devrez peut-être modifier cette commande pour refléter le gestionnaire de packages utilisé par votre distribution.

Mise en route

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é, chez est préférable pour les situations où votre tâche est plus "ponctuelle" qu'un événement récurrent.

J'ai créé un tableau avec certaines des commandes de base associées à at .

Commande Fonction
à permet à l'utilisateur de planifier une tâche
atq répertorie les travaux en file d'attente pour l'utilisateur connecté, ou tous les utilisateurs s'ils sont exécutés en tant que sudo
atrm supprime les travaux par numéro de travail spécifié
lot ordonne au système de n'exécuter la tâche qu'à l'heure spécifiée si la charge du système est à un certain niveau (charge moyenne de <1,5)
Tous les raccourcis clavier [ ctrl + a ] + ?

Utilisation de la commande at sous Linux pour planifier des tâches

Utiliser sur a son propre format unique. Lorsque vous souhaitez planifier une tâche, vous saisirez dans votre terminal :

at [time] [date/day]

L'heure est obligatoire, mais la date est facultative, si rien n'est entré, il fera une hypothèse basée sur la date et l'heure système actuelles.

Lorsque vous appuyez sur Entrée, vous serez invité à saisir des commandes. Vous pouvez en saisir autant que vous le souhaitez. Tapez 'ctrl + d' pour enregistrer et quitter.

Laissez-moi vous le montrer avec des exemples.

Exemple 1 :Saisir l'heure/la date en langage naturel

Vous disposez de nombreuses options différentes pour saisir l'heure. Contrairement à crontab avec son système basé sur un astérisque quelque peu délicat, "at" reconnaît plus efficacement l'entrée "humaine".

Il existe de nombreuses expressions humaines qui peuvent être comprises par le logiciel. Beaucoup d'entre eux sont spécifiques aux paramètres régionaux. Il peut reconnaître des expressions courantes telles que « minuit » ou « midi ». Il peut également différencier AM et PM. De même, il peut reconnaître différents formats pour les jours et les dates, y compris les abréviations.

Il peut également utiliser l'expression "maintenant". Vous pouvez simplement entrer la commande comme ci-dessous et elle exécutera la commande en 5 minutes.

at now + 1 minutes
[email protected]:~$ at now + 1 min
warning: commands will be executed using /bin/sh
at> echo "Look at you, using at like a champ!" > message.txt
at> <EOT>
job 8 at Mon Jan  6 02:59:00 2020

Vous pouvez très probablement ignorer l'avertissement concernant bin/sh . Cela pourrait potentiellement causer des maux de tête si vous utilisez un shell différent. La grande majorité des distributions Linux sont livrées avec bash comme shell système lié symboliquement par "sh"... C'est une longue histoire.

Donc, ça fait environ une minute, n'est-ce pas? Vérifiez le répertoire pour un nouveau fichier.

Vous devriez avoir un fichier appelé "message.txt" contenant notre texte.

[email protected]:~$ ls m*
message.txt

Ça a l'air bien, mais a-t-il capturé notre message correctement ? Voyons le contenu du fichier :

[email protected]:~$ cat message.txt 
Look at you, using at like a champ!

Exemple 2 :Utilisation d'une heure/date spécifiée

Pour votre premier emploi, vous avez utilisé le temps "relatif" "maintenant + [temps]". Il s'agit d'un moyen très simple de planifier une tâche, mais vous souhaiterez peut-être être plus précis.

Cette fois, planifions 2 tâches à des moments différents.

Vous pouvez utiliser le fichier message.txt (créé dans l'exemple précédent) pour la démonstration. Chaque tâche remplacera le contenu du fichier.

Vous pouvez vérifier l'heure actuelle sur votre système Linux avec la commande date.

Configurez la première tâche pour une heure précise (à partir de 5 minutes) :

[email protected]:~$ at 3:45 
warning: commands will be executed using /bin/sh
at> echo "5 minutes later..." > message.txt
at> <EOT>
job 11 at Mon Jan  6 03:45:00 2020

Configurez la deuxième tâche pour une heure spécifique (10 minutes à partir de maintenant) :

[email protected]:~$ at 3:50
warning: commands will be executed using /bin/sh
at> echo "10 minutes later..." > message.txt    
at> <EOT>
job 12 at Mon Jan  6 03:50:00 2020

Vérification à 15h45 :

[email protected]:~$ cat message.txt 
5 minutes later...

Vérifier à 15h50 :

[email protected]:~$ cat message.txt 
10 minutes later...

Exemple 3 :Afficher toutes les tâches en file d'attente avec atq

À tout moment, vous pouvez vérifier les tâches planifiées à l'aide de la commande atq. Il répertorie toutes les tâches actuellement planifiées pour l'utilisateur connecté. Pour voir toutes les tâches sur le système, vous devrez peut-être utiliser des privilèges élevés.

[email protected]:~$ atq
11    Mon Jan  6 03:45:00 2020 a christopher
12    Mon Jan  6 03:50:00 2020 a christopher

Chaque tâche est identifiée par un ID de tâche, son heure planifiée et l'utilisateur associé.

Vous pouvez également afficher le contenu de la tâche planifiée avec l'option -c :

at -c jobnumber

Exemple 4 :Suppression d'une tâche planifiée avec atrm

Si vous décidez d'annuler une tâche avant qu'elle ne soit exécutée, cela peut être fait en tapant la commande suivie de son identifiant de tâche correspondant (que vous pouvez obtenir avec la commande atq).

[email protected]:~$ atrm 11
[email protected]:~$ atq
12    Mon Jan  6 03:50:00 2020 a christopher

Comme vous pouvez le constater, la tâche 11 a été supprimée de la file d'attente.

Exemple 5 :Utiliser un fichier pour la commande at

Vous avez peut-être un ensemble de scripts que vous souhaitez exécuter de manière irrégulière et cron n'est pas la bonne solution. Vous pouvez entrer plusieurs travaux sans utiliser l'entrée standard.

Imaginons un scénario où les RH demandent une documentation sur l'activité informatique d'un employé qui, selon eux, enfreint la politique de travail. Vous souhaiterez peut-être que certains journaux d'activité ou d'autres informations d'historique génèrent un rapport pour vous à des moments précis.

Vous pouvez gagner du temps en répertoriant les scripts nécessaires dans un fichier texte en les exécutant avec at.

[email protected]:~$ cat problem_employee_logs.txt 
path/to/get_browsing_history.sh
/whatever/path/get_activity_logs.sh

Vous avez eu l'idée. Alors maintenant, vous pouvez ajouter -f à la commande 'at' et inclure le nom du fichier après comme ceci :

[email protected]:~$ at now + 2 minutes -f problem_employee_logs.txt 
warning: commands will be executed using /bin/sh
job 16 at Mon Jan  6 05:42:00 2020

Exemple 6 :Exécuter une tâche lorsque la charge du processeur tombe en dessous d'un seuil

Les tâches par lots seront exécutées lorsque la charge moyenne du processeur descendra en dessous de 1,5 par défaut.

batch

La méthode de saisie des travaux par lots est identique à 'at ', sauf qu'il n'a pas besoin d'être spécifié.

Si vous souhaitez modifier le seuil de charge, vous pouvez le faire avec la commande suivante :

atd -l [n]

Où n est le seuil de charge que vous souhaitez choisir. La page de manuel vous recommande de le remplacer par une valeur supérieure à n-1, où n est le nombre de processeurs de votre système.

Conclusion

Merci d'avoir lu. J'espère que votre compréhension de la commande at s'est améliorée. Si vous avez des questions ou souhaitez partager votre utilisation de cette commande, dites-le nous ! Laissez un commentaire ci-dessous.


Linux
  1. Planifier une tâche avec la commande Linux at

  2. Commande Linux Tee avec exemples

  3. Commande JQ sous Linux avec exemples

  4. Comment planifier des tâches à l'aide de sous Linux

  5. Lister le fichier à l'aide de la commande ls sous Linux avec le chemin complet

Utilisation de la commande Cat sous Linux avec des exemples

Utilisation de la commande GREP sous Linux avec des exemples

Comment automatiser les tâches quotidiennes sur Linux en utilisant (at)

Utilisation de la commande Watch sous Linux

Utilisation de la commande tr sous Linux pour jouer avec des personnages

Comment planifier des tâches avec Cron sous Linux