Все, что я хочу от этого скрипта, - это ssh для хоста и проверить, жив ли процесс, а если нет, мне нужен сценарий littel умереть. Не умирает. Он останавливается, а затем снова запускается на ssh. Я хочу смерти, хотя.Bash while loop - break and exit (DIE script DIE !!!)
#!/bin/bash
iterate=0
while [ $iterate -le 20000 ]
do
rc=$?
ssh -q -T coolhost "ps -ef | egrep '[i]cool-process' | grep wrapper "
if [[ $rc -eq 0 ]] ; then
sleep 2
iterate=$((iterate+1))
else
break
exit 1
fi
done
Он будет проходить до 2000, однако, если удаленный процесс сломается, он не умрет. Он не сломается и не выйдет.
это будет работать - но не будет спать - если я поставлю сон, rc отправится в 0 и никогда не умрет. , так что это работает, но является слишком простым.
#!/bin/bash
set -e
while : ; do
ssh -q -T coolhost "ps -ef | egrep '[i]cool-process' | grep wrapper" > /dev/null 2>&1
done
Вместо 'пс -ef | grep ... ', используйте' pgrep'. Это гораздо более прямой способ поиска процессов по имени (обратите внимание на полезные опции, такие как '-u' и' -f', которые вам могут понадобиться или нужны). Он вернет код сбоя, если процесс не найден. –
'rc = $?' Должно быть в строке, следующей за 'ssh' ... – Jasen