Forum Linux.général watch... avec un "watchdog"?

Posté par  (Mastodon) . Licence CC By‑SA.
Étiquettes : aucune
1
15
août
2023

bonjour

j'utilise régulièrement l'utilitaire watch -n XX ./script pour lancer des scripts à répétition, pour des "taches à faible valeur ajoutée", comme certains aiment les appeler.
je lance donc un watch -n 60 ./script pour faire lancer chaque minute un script qui effectuera une meme manip durant une demie minute. Et chaque minute, watch relance l'ordi sur ce script, etc… ce qui est fort pratique

la problématique, c'est que l'ordi dédié à cela, a tendance à voir son controle distant (anydesk ou nomachine) "bloqué" lorsque le script se déroule pendant plusieurs heures : l'interface de mint (debian) ne réagit plus aux clavier/souris. Je peux le redémarrer à distance via ssh, mais je préférerais quelque chose qui me permette, si possible avec watch, d'effectuer ceci :

watch -n 60 -m 500 ./script

où le script s'exécute toutes les 60 secondes, pour une durée max de 500 secondes, ou pour un total de 500 exécutions. le -m en fin de paramètres ici est fictif à titre d'exemple : je trouve pas de telle option sur le logiciel, mais j'imagine qu'il doit y avoir un truc simple pour dire à watch (dont j'ai compris qu'il sert à faire tourner en boucle une action) de faire son travail, délimité sur ue période déterminée, ou d'un nombre d'essais aussi déterminé, de manière à ce que ce soit pas un truc infini, quitte à le relancer par la suite.

il y a quelques années, on m'avait dit qu'en électronique cela s'appelait watchdog (chien de garde), aka le logiciel (ou la puce) qui va dire au logiciel, après tel délai, ou décompte, "stop" et ca s'arrete.

y a t-il la possibilité de faire une telle réalisation avec watch?
merci :)

  • # Commande timeout

    Posté par  (site web personnel) . Évalué à 3. Dernière modification le 15 août 2023 à 13:51.

    Pour le timeout, tu peux utiliser la commande du même nom.

    Par contre, pour limiter sur le nombre d'exécutions, il te faudra probablement un script et enregistrer le nombre d'exécutions dans un fichier ou en mémoire.

    Edit : Apparemment, il y a le paramètre -q de watch permet de sortir après un certain nombre de cycles.

           -q, --equexit <cycles>
                  Exit when output of command does not change for the given number of cycles.
    
  • # mauvais outil?

    Posté par  . Évalué à 9.

    Pour exécuter une commande à intervalle régulier, le bon outil est cron.

    S'il est important de pouvoir limiter le nombre d'exécution, tout en se prémunissant des déconnexions, alors il faut lancer la commande dans une session screen ou tmux.

  • # commande timeout

    Posté par  . Évalué à 2. Dernière modification le 17 août 2023 à 06:11.

    man timeout

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.