一个简单的watchdog脚本在SCO和AIX下的问题
一个简单的watchdog脚本,判断当进程停止时把它自动重启,脚本如下:
在sco下可以正常执行,但在aix下执行有问题,在20行报错:A test command parameter is not valid.
后把20行改成if [ "$FUN_RET" = 'UP' ]可以正常执行,但是每次都认为进程没有启动(即使已经启动的情况)
后来经过多次实验,发现,在sco下当进程已经启动时使用 wc -l 后得到的结果是:
1
而在aix下当进程已经启动时使用 wc -l 后得到的结果是:
1
前面会有很多空格,所以当用case判断时不正确,后来将第3行改成以下方式:
ret=`ps -aef | grep "$1" | grep -v grep | wc -l|sed 's/ //g`
将空格去除后再比较,就正确了。
1
get_web_srv_sts()
2
{
3
ret=`ps -aef | grep "$1" | grep -v grep | wc -l`
4
5
case $ret in
6
0)
7
FUN_RET="DOWN"
8
;;
9
1)
10
FUN_RET="UP"
11
;;
12
*)
13
FUN_RET="ERROR: $ret INSTANCES RUNNING"
14
;;
15
esac
16
}
17
18
19
get_web_srv_sts "./process1"
20
if [ $FUN_RET = 'UP' ]
21
then
22
echo "process1 running"
23
else
24
./process1
25
sleep 10
26
fi
27
get_web_srv_sts()2
{3
ret=`ps -aef | grep "$1" | grep -v grep | wc -l`4

5
case $ret in6
0)7
FUN_RET="DOWN"8
;;9
1)10
FUN_RET="UP"11
;;12
*)13
FUN_RET="ERROR: $ret INSTANCES RUNNING"14
;;15
esac16
}17

18

19
get_web_srv_sts "./process1"20
if [ $FUN_RET = 'UP' ]21
then22
echo "process1 running"23
else24
./process125
sleep 1026
fi27

在sco下可以正常执行,但在aix下执行有问题,在20行报错:A test command parameter is not valid.
后把20行改成if [ "$FUN_RET" = 'UP' ]可以正常执行,但是每次都认为进程没有启动(即使已经启动的情况)
后来经过多次实验,发现,在sco下当进程已经启动时使用 wc -l 后得到的结果是:
1
而在aix下当进程已经启动时使用 wc -l 后得到的结果是:
1
前面会有很多空格,所以当用case判断时不正确,后来将第3行改成以下方式:
ret=`ps -aef | grep "$1" | grep -v grep | wc -l|sed 's/ //g`
将空格去除后再比较,就正确了。


浙公网安备 33010602011771号