Re: Timeout

Page principale

Répondre à ce message
Auteur: Nicolas Tripon
Date:  
CC: guilde
Sujet: Re: Timeout
>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 ?


Le message est affiché quand le sous-shell finit à cause de TERM.
Il suffit de rediriger stderr juste avant l'entrée dans le sous-shell,
et de le restaurer juste après la sortie, en lui gardant, dans le sous-shell,
sa valeur d'origine, afin que tu puisses collecter tes messages d'erreur :

exec 3>&2 2>/dev/null # fd3 = fd2 ; fd2 -> /dev/null
set -m
(
exec 2>&3 3>&- # fd2 = fd3 ; fermer fd3

(sleep 5 ; kill 0) & # timeout

sleep 10 # programme
kill 0
)
set +m
exec 2>&3 3>&-

-Nicolas