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

**URL:** <https://www.debian-fr.org/t/forcer-un-script-bash-a-sarreter-apres-une-certaine-duree/79504>\
**Category:** Programmation\
**Created:** [Juin 23, 2019, 9:28 UTC](https://www.debian-fr.org/t/forcer-un-script-bash-a-sarreter-apres-une-certaine-duree/79504 "2019-06-23T21:28:29Z")\
**Posts on this page:** 1\
**Showing post:** 7

<div class="post-metadata">

**Author:** ![anon44391915](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/a/958977/32.png) [@anon44391915](https://www.debian-fr.org/u/anon44391915)\
**Post date:** [Juin 24, 2019, 11:38 UTC](https://www.debian-fr.org/t/forcer-un-script-bash-a-sarreter-apres-une-certaine-duree/79504/7 "2019-06-24T23:38:27Z")

</div>

> [@anon44391915](#):
>
> Pour le délai, avec le PID du script, je vois un truc simple comme :
> 
> ```plaintext
> sleep 120 && kill [options] PID 2>&1 &
> 
> ```

> [@mattotop](#):
>
> En shell, le PID courant est _$$_ et le PID du parent _$PPID_

Hello @domoticity

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

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

Merci bien mattotop.

J’ai ça qui fonctionne :

```plaintext
#!/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 :

```plaintext
$ ./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’«&nbsp;adresse&nbsp;» 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](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](https://www.debian-fr.org/t/dd-recuperer-lavancement/79639/10)

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

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

```

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

---

_[View the full topic](https://www.debian-fr.org/t/forcer-un-script-bash-a-sarreter-apres-une-certaine-duree/79504)._
