我想从这个脚本中获取的是ssh到主机,并检查进程是否处于活动状态,如果不存在,我希望littel脚本死掉。 虽然不死。它停止,然后再次启动ssh再次成功。 我想要死亡。
#!/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
答案 0 :(得分:2)
您在rc=$?
命令之前设置ssh
,最后一个命令是test
([
)命令,该命令刚刚成功,因此当您测试{{1答案永远是肯定的,是的,它的确是'。
最好直接测试if [[ $rc -eq 0 ]]
的状态:
ssh