Forcer un script bash à s'arrêter après une certaine durée

Hello @domoticity

Ce que j’ai fait avec pgrep ne sert plus à rien.

Tu tuerai le PID courant ou le PID du parent ? :thinking:
Je vais probablement faire des essais de mon côté.

Merci bien mattotop.

J’ai ça qui fonctionne :

#!/bin/bash
sleep 10 && kill $$ 2>&1 &
while :
do
    echo "."
    sleep 1
done
exit 0

Avec le PID du parent ($PPID) ça ne marche pas ;
le parent dans mon cas est le processus bash lui-même, ouvert dans mon terminal.
Car je lance les scripts tout bêtement avec :

$ ./monscript.sh

Je crois que ce n’est pas trop une bonne idée d’utiliser 2>&1 & en phase de test
car c’est peut-être trop silencieux pour voir les messages éventuels.
Utiliser un simple & peut suffire au début.

Et en plus je l’ai juste recopié d’un tuto sans bien comprendre…
Je me renseigne davantage alors :

Une astuce est de se rappeler que 1 = sortie standard, 2 = erreur standard. Alors :

2>&1 = le flux d’erreur standard passe dans le flux de sortie standard.
1>&2 = vice versa.

J’ai choisi de considérer l’esperluette (&) comme faisant référence
à l’« adresse » du descripteur de fichier existant.

Une esperluette afin que vous ne changiez pas le fichier lui-même
ou que vous n’en créiez pas un nouveau.

Il est facile de se le rappeler si vous avez déjà programmé en langage C

https://unix.stackexchange.com/questions/746/how-could-i-remember-how-to-use-redirection

Voir aussi https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/10?u=r2mi

Mon but au début était de rendre la commande silencieuse
et en fin de compte je l’obtiens avec à minima :

sleep 10 && kill $$ > /dev/null &

Tant de jeunes années perdues ou presque avec l’interpréteur COMMAND.COM :disappointed_relieved:
Je n’ai plus le feu sacré que j’ai pu avoir.