GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisation d'at pour les tâches cron à usage unique sous Linux

Cron est l'un des UNIXismes les plus reconnaissables du monde informatique. Même les informaticiens qui n'administrent pas les serveurs Linux ont entendu parler de cette bête mystérieuse, le "travail cron". Et les administrateurs Linux savent que les tâches cron sont infiniment utiles. En fait, on peut soutenir que le cron système a été l'un des premiers précurseurs de l'engouement pour l'automatisation. S'il y avait quelque chose que vous saviez qu'un humain pouvait oublier de faire, cron était la réponse.

Cependant, où cron excels est la répétition, et parfois vous n'avez pas besoin d'un travail pour exécuter toutes les heures ou tous les jours ou toutes les semaines. Vous avez juste besoin qu'un travail soit exécuté dans les délais, et définir une alarme pour vous le rappeler ne ressemble tout simplement pas à la méthode UNIX. Ce dont vous avez besoin est le at command, un petit utilitaire que vous pouvez utiliser pour créer une file d'attente de travaux programmés pour s'exécuter at un moment précis dans le futur.

Configuration

Avant d'utiliser le at commande, vous devez avoir un script shell que vous souhaitez lancer à un moment donné. Comme d'habitude, votre script doit avoir une ligne "cookie magique" ou "shebang" en haut du fichier pour définir le shell à utiliser pour son exécution.
Pour cet exemple, créez un script simple qui crée un fichier dans /tmp :

#!/bin/sh

DATE=`date --utc +%s`
echo "hello world $DATE" | tee /tmp/at.log
exit 0

Rendez le script exécutable, puis testez-le :

$ chmod +x test.sh
$ ./test.sh

Afficher le contenu du /tmp/at.log archivez le script créé :

$ cat /tmp/at.log

hello world 1588482185

Planifier une tâche

Vous pouvez planifier une tâche à l'aide d'un horodatage ou en langage naturel. Si vous utilisez du langage naturel ou des formats d'heure simples, aucune option n'est requise avant de spécifier l'heure.
Par exemple, pour planifier test.sh pour s'exécuter immédiatement, vous pouvez simplement utiliser le mot-clé now :

$ at now -f test.sh

warning: commands will be executed using /bin/sh
job 1 at Mon Feb 24 01:23:00 2020
$ cat /tmp/at.log

hello world 1588482620

Vous pouvez définir un décalage à partir de maintenant en utilisant minutes , hours , days , weeks , ou years .

$ at now + 1 day -f test.sh

warning: commands will be executed using /bin/sh
job 2 at Tue Feb 25 01:27:00 2020

Les years le mot-clé n'est pas documenté et seconds n'est pas pris en charge. Vous pouvez également spécifier des heures communes, telles que midnight , noon , et teatime (il est 16h00).

Les temps simples fonctionnent aussi :

$ at 21:12 -f test.sh

warning: commands will be executed using /bin/sh
job 3 at Mon Feb 24 21:12:00 2020

Pour programmer une date calendaire à une heure précise, vous devez utiliser le -t option et tout format d'heure compatible POSIX. Par exemple, en utilisant le format AAAAMMJJHHMM :

$ at -t 202003141509 -f test.sh

warning: commands will be executed using /bin/sh
job 4 at Sat Mar 14 15:09:00 2020

[ Vous recherchez une automatisation système plus avancée ? Démarrez avec The Automated Enterprise, un livre gratuit de Red Hat. ]

Tuyaux

Vous pouvez envoyer des commandes à at via un tube UNIX :

$ echo "hello world" > /tmp/at.log | at now

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:28:00 2020

$ cat /tmp/at.log

hello world

Tâches par lots

Le batch commande (ou at -b ) exécute une commande dès que les ressources système le permettent. Si la charge de votre système est élevée, vous pouvez utiliser batch pour mettre en file d'attente votre travail à exécuter lorsqu'il y a des cycles CPU à épargner.

$ echo "Cycles to spare" > /tmp/at.log | batch

warning: commands will be executed using /bin/sh
job 5 at Mon Feb 24 01:31:00 2020

Affichage de votre file d'attente

Le atq la commande affiche votre at file d'attente. Cela vous donne l'ID du travail, l'heure à laquelle chaque travail est programmé pour s'exécuter, la file d'attente dans laquelle chaque travail est regroupé (a pour le at file d'attente ou b pour le batch file d'attente) et le nom d'utilisateur du propriétaire de la file d'attente. Le propriétaire de la file d'attente est généralement vous-même, sauf si vous exécutez atq en tant que root, auquel cas vous voyez tous les at de l'utilisateur files d'attente.

$ atq 

2   Tue Feb 25 01:27:00 2020  a  seth
3   Mon Feb 24 21:12:00 2020  a  seth
4   Sat Mar 14 15:09:00 2020  a  seth
5   Mon Feb 24 01:31:00 2020  b  seth

Vous pouvez créer et nommer vos propres files d'attente en utilisant n'importe quel caractère unique c-z ou A-Z . Les deux a et b sont des désignations réservées pour at et batch , et toute file d'attente avec une lettre majuscule est traitée comme un batch travail. Files d'attente dont les noms suivent alphabétiquement a et b sont exécutés avec une gentillesse croissante.

Aperçu de votre travail

Lorsque vous envoyez une commande ou un script à at , votre répertoire de travail actuel, environnement (à l'exception de BASH_VERSINFO , DISPLAY , EUID , GROUPS , SHELLOPTS , TERM , UID , et _ ), et les umask sont conservés. Si votre commande attend des paramètres d'environnement spécifiques, vous devez les définir en passant la commande à at ou remplacez-les dans votre script.

Pour voir comment votre commande va s'exécuter, utilisez le -c option avec le numéro de travail :

$ at -c 4

#!/bin/sh
# atrun uid=1006 gid=1006
# mail seth 0

umask 22
CPLUS_INCLUDE_PATH=/usr/lib64/qt/include; export CPLUS_INCLUDE_PATH
MANPATH=/usr/local/man:/usr/man:/usr/lib64/adoptopenjdk12.0.2/man; export MANPATH
KDE_MULTIHEAD=false; export KDE_MULTIHEAD
[...]

Suppression de tâches

Vous pouvez supprimer les travaux en attente de votre at file d'attente à l'aide de atrm commande et l'ID du travail. Si vous ne connaissez pas l'ID du travail, utilisez atq pour afficher votre file d'attente en premier.

$ atq 

6   Fri Jan 01 00:00:00 2038  a  seth
$ atrm 6

$ atq

Planification avec at

Le at la commande est un peu comme un petit cron système. C'est utile pour l'exécution d'une commande unique et c'est facile à utiliser. Si vous avez utilisé cron ou sleep pour décaler le temps d'exécution d'une commande, regardez at et batch .

[ Besoin d'en savoir plus sur l'administration système Linux ? Envisagez de suivre un cours d'administration système Red Hat. ]


Linux
  1. Conseils Linux pour utiliser cron pour planifier des tâches

  2. Cron Job :un guide complet pour les débutants 2022

  3. jobs Options de commande sous Linux

  4. Utilisation de variables dans SQLCMD pour Linux

  5. Utiliser les tâches CRON pour visiter l'url ?

Configurer des tâches Cron pour Linux et 10 meilleurs outils en ligne pour les tâches Cron

Planifier des travaux sous Linux avec la commande 'at'

Comment utiliser la commande Jobs sous Linux

Qu'est-ce qu'un travail Cron sous Linux

Comment exécuter et répertorier les tâches Cron pour un système Linux via PHP

Linux Crontab :15 exemples de tâches Cron impressionnants