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> 0Unix код возврата меняется после того, как команда сна
ret_code на < 2> не печатает
ret_code на < 3> пустой
Может кто-то сказать почему значение ret_code изменяется во время и после команды sleep?
EDIT:
Я попробовал альтернативный подход. Он работал -
#! /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) Что такое stop.sh на линии 3? –
2) Можете ли вы настроить выражения эха, чтобы они включали «1.», «2.» и т. д. и включить вывод сценария, пожалуйста? –
@AshBerlin Это еще один сценарий оболочки, который фактически останавливает службы. Обычно он работает нормально, поэтому rc обычно равен 0. Но иногда он застревает, и, следовательно, этот сложный способ написания простого процесса stop/start – Jay