0
我想從這個腳本中獲得的所有內容都是ssh到主機,並檢查進程是否還活着,如果不是,我想要littel腳本去死。 雖然沒有死。它停止,然後再次啓動ssh,再次成功。 雖然我想要死亡。Bash while循環 - 中斷並退出(DIE腳本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
相反的'ps -ef的| grep ...',使用'pgrep'。這是一種更直接的方式來搜索名稱的進程(注意你可能需要或者需要的'-u'和'-f'等有用的選項)。如果找不到該過程,它將返回失敗代碼。 –
'rc = $?'應該在'ssh'之後的行上... – Jasen