J'utilise la fonction timeout sur debian pour attendre 5 secondes pour mon script. Fonctionne très bien mais le problème que j'ai est que j'ai besoin d'une valeur de retour. Comme 1 pour le délai d'attente et 0 pour aucun délai d'attente Comment vais-je faire cela?
Jetez un œil à mon code:
timeout 5 /some/local/script/connect_script -x 'status' > output.txt
# here i need the return of timeout
Comme vous voyez mon connect_script -x 'status' retourne le statut sous forme de chaîne et l'imprimez à l'écran (probablement vous ne pouvez pas le voir) Le fond de ce problème est que si le serveur (pour connect_script) est bloqué, le script ne fait rien . C'est pourquoi j'ai besoin d'un délai d'attente. Et quand il expire, je veux redémarrer le serveur. Je peux le faire, mais je ne sais pas comment je peux voir si son délai d'attente ou non ...
Selon le manuel (
man timeout
):Combinez cela avec la connaissance que l'état de sortie ou la valeur de retour est stocké dans la variable
$?
, et nous avons ...Ensuite, vous pouvez effectuer davantage de traitement en fonction de la valeur de
$RETVAL
, qui sera 124 s'il expire, ou d'une autre valeur basée sur l'état de sortie deconnect_script
.la source
La valeur de retour de
timeout
dépend du signal que vous utilisez pour mettre fin à l'enfant.SIGTERM
renvoie 124:Mais
SIGKILL
renvoie 137:Voir la page de manuel:
la source