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

2



3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

在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`
将空格去除后再比较,就正确了。