Re: Timeout

Top Page

Reply to this message
Author: Frédéric
Date:  
To: guilde
Subject: Re: Timeout
On Tuesday 26 September 2006 21:08, Nicolas Tripon wrote:

> set -m
> (
>   (sleep 5 ; kill 0) & # timeout
>
>   sleep 10 # programme
>   kill 0
> )
> set +m
>
>   Le problème avec les solutions qui prennent le pid d'un processus pour
> le tuer après un certain temps, c'est que le processus pourrait avoir
> disparu bien avant ; ce qui n'est pas grave si un autre processus du
> même pid n'a été crée entre temps. On pourrait dire : 'la probabilité
> est faible pour que ce soit le cas'. Oui, mais pas nulle. Dans la
> solution plus haut, on envoit un signal au groupe de processus du
> sous-shell entre '(' et ')' ; comme le signal est envoyé depuis
> l'intérieur, ce groupe n'est jamais vide : on ne peut pas viser un
> processus étranger.


Nicolas, merci pour cette solution (et l'explication) : ça marche nickel !

Juste un petit truc : quelle que soit l'issue (fin normale ou timeout),
j'ai le message suivant qui s'affiche sur la sortie d'erreur :

./ws2300-timeout.sh: line 14:  5075 Terminated              ( ( sleep 
$TIMEOUT; kill 0 ) & /usr/local/bin/fetch2300; kill 0 )


Or, comme ce script est exécuté dans un cron, je me retrouve avec un
message d'erreur envoyé à root. Et je ne peux pas non plus tout rediriger
stderr vers /dev/null, car sinon je n'aurai plus les vraies erreurs des
scripts appelés.

Une idée comment le supprimer ?

--
Frédéric

http://www.gbiloba.org