这个程序是参照网上的,主要是为了防止脚本多次启动的,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
我尝试了一次,启动一个脚本以后,按照你说的方法对脚本启动数量进行计算,得出的结果为1,如下:
------------------------------------
其返回结果为1
那么你的实例过程中出现的问题应该是,启动了两次noagain.sh脚本,如:
----------------------------
希望对你有所帮助。
欢迎关注本人博客: http://www.cnblogs.com/grass-and-moon/