stop()
{
sh stop.sh
ret_code=$?
<1>echo ret_code is $ret_code
}
once=true
while $once
do
stop & PID=$!
<2>echo ret_code is $ret_code
sleep 2m
<3>echo ret_code is $ret_code
if [ $ret_code == 0 ]
then
break
else
kill $PID
fi
done
ret_code à < 1> est 0code de retour Unix change après la commande du sommeil
ret_code à < 2> n'imprime pas
ret_code à < 3> est vide
Quelqu'un pourrait-il dire pourquoi la valeur de ret_code est modifiée pendant et après la commande sleep?
EDIT:
J'ai essayé une autre approche. Il a travaillé -
#! /bin/sh
once=true
while $once
do
sh stop.sh & PID=$!
sleep 2m
kill $PID
if [ $? != 0 ]
then
echo stop has completed successfully within the time limit
echo starting ...
sh start.sh
break
fi
done
1) Qu'est-ce que stop.sh à la ligne 3? –
2) Pouvez-vous ajuster les instructions d'écho pour inclure "1.", "2." etc et inclure la sortie du script s'il vous plaît? –
@AshBerlin C'est un autre script shell qui arrête réellement les services. Il fonctionne généralement bien, donc rc est généralement 0. Mais parfois il est bloqué, et donc cette façon complexe d'écrire un simple processus stop/start – Jay