这个程序是参照网上的,主要是为了防止脚本多次启动的,checkprocess 函数的参数就是脚本的名称,然后函数中用 ps 判断脚本启动的个数,我明明只启动一个脚本,但不知道为什么 粗红色部分,总是返回 2, process_num 总是比我启动的脚本进程数多 1 。我的脚本运行环境为 RHEL6.3,请大牛们帮看看,感激不尽。
#!/bin/bash
checkprocess() {
echo "entering chechprocess()"
echo "parameter is :" $1
if [ "$1" = "" ]; then
return 1
fi
declare -i process_num=0
echo "ps result is :" $process_num
**process_num=`ps -ef |grep "$1" |grep -v "grep" |wc -l`
echo "process_num :" $process_num**
if [ $process_num -eq 1 ]; then
return 0
else
return 1
fi
}
while [ 1 ] ; do
checkprocess "noagain.sh"
check_result=$?
echo "function return value is:" $check_result
if [ $check_result -eq 0 ];then
echo "I haved started !"
fi
echo "I am here ...."
sleep 20
done