IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

matrix788

Automate de commandes, sans crontab - Part 2

Noter ce billet
par , 04/04/2016 à 20h00 (580 Affichages)
On a vu dans le billet précédent qu'il y avait un outil assez intéressant pour celui qui recherchait comme une alternative à la crontab, la commande "watch".

On avait vu qu'il était possible d'effectuer une exécution de la commande selon un intervalle de temps défini (par défaut, ou via l'utilisateur, dans la limite minimale de 1s).

Une option supplémentaire peut venir s'ajouter à cette option d'intervalle dans le cas où on est assez pointilleux sur cela. L'option "-p", ou --precise, permet d'affiner la durée pour l'intervalle de temps, au centième de secondes près.

Exemple avec ces 2 commandes. La première est dans l'option "precise", et la seconde avec. Je joint le compte rendu juste après:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
watch -n 1 "date '+%H:%M:%S.%N'>> date_noprecise.log"
20:40:34.153833722
20:40:35.159911022
20:40:36.165803010
20:40:37.171942544


Code : Sélectionner tout - Visualiser dans une fenêtre à part
watch -n 1 --precise "date '+%H:%M:%S.%N'>> date_precise.log"
20:40:02.379605641
20:40:03.379820037
20:40:04.379646544
20:40:05.379736789


Comme on le voit, le rafraîchissement avec l'option "précise" s'effectue toutes les 1 secondes et 379 centièmes.


Voilà pour les intervalles de temps, passons maintenant aux autres options...

Il peut arriver que vous lanciez une commande qui n'existe pas, ou qui entraîne une sortie en erreur.
Lorsque une erreur se produit, la commande watch reste figée à la page principal, et offre la possibilité de sortir via une commande quelcquonque du clavier. Cela se fait avec l'option : "-e", ou "--errexit":


sh: 1: date!: not found
command exit with a non-zero status, press a key to exit


Bon, c'est vrai, on pourrait automatiser tout çà pour que le programme quitte de lui-même après une erreur. Utiliser alors le nohup pour passer le job en fond. Mais l'intérêt réside ici dans le fait d'afficher en console ce qui s'est passé. C'est plus pertinent avec une commande plus complexe que "date", qui est susceptible de changer, ou pour des fichiers "mobiles" par exemple.

L'autre possibilité de watch, c'est de quitter juste après un changement dans la sortie de la commande. Cela se fait avec l'option : "-g", ou "--chgexit":

Dans cette exemple, watch se termine de lui-même (on revient au prompt, et on ne reste pas en console, sauf erreur dans la commande) après que les secondes ait été modifiées, donc, après 1 seconde d'exécution étant donné qu'on est sur un intervalle n1.

Et si on mettait un peu de couleur dans tout çà. En effet, il peut arriver que dans une commande, ou le résultat d'une commande, on ait un caractère ANSI à interprété. De base, ca n’affichera que le texte avec le code ANSI. Il faut passer par l'option "-c" ou "--color" pour demander à watch d’interpréter la séquence de code ANSI.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
watch -n 1 "echo '\033[36mTexte en bleu\033[0m'"

Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Viadeo Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Twitter Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Google Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Facebook Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Digg Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Delicious Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog MySpace Envoyer le billet « Automate de commandes, sans crontab - Part 2 » dans le blog Yahoo

Catégories
Outils , Shell

Commentaires