Exécuter un script avec un délai avec ‘at’

Exécuter un script avec un délai avec ‘at’

Categories How to, Linux, SysAdmin

Parfois, il peut s’avérer utile d’exécuter un script linux avec un décalage d’1 heure par exemple.

Pour se faire, j’utilise désormais la commande ‘at‘.

Par exemple, pour executer une commande qui m’exécutera un script dans 5 minutes, on procédera comme suit:

at now + 5 minutes -f /etc/monscript.sh

L’attribut now charge le temps actuelle dans la commande. Ainsi, en tapant now +3 days, la commande sera effectuer dans 3 jours à l’heure actuelle.
On peut également utiliser les dates comme suit: 10:00 13/11/2011 

Pour lister tous les jobs qui ont été lancé:

 at -l

ou

atq

En réponse de ces commandes, on obtient:

 bob@tsoin:~# atq
11      Mon Nov 14 11:00:00 2011 a root
10      Sun Nov 13 18:55:00 2011 a root

Les premiers chiffres de chaque ligne indiquent le numéro du job. Ainsi, pour tuer le job du 14 novembre à 11h, il suffit de taper:

atrm 11

Si en retour, vous obtenez “Cannot find jobid 11”, cela signifie que la commande s’est bien exécuter. Vous pouvez vérifier en relistant les jobs.

Enfin, si vous tapez la commande

at now + 5 minutes -f /etc/monscript.sh

vous pouvez taper une à une les commandes que vous souhaitez executer dans 5 minutes, en tapant sur “Entree” a chaque fois. Pour finir l’édition de votre job, appuyez sur “Entree” et  utilisez la combinaison de touche “CTRL + D“.

Malheureusement, il n’est pas possible d’indiquer dans les arguments de la commande at la commande à executer. Il faudra toujours passer par un fichier physique sur l’ordinateur dans ce cas précis. Ainsi, si on doit utiliser la command at dans un script, on peut faire comme suit:

at now + 5 minutes < $HOME/listofcommands.txt

Dans ce cas la, il suffit de renseigner toutes les commandes à exécuter dans le fichier texte listofcommands.txt présent dans le dossier de l’utilisateur.

I'm passionnated

1 thought on “Exécuter un script avec un délai avec ‘at’

Leave a Reply

Your email address will not be published. Required fields are marked *