>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