首页 新闻 会员 周边 捐助

【请教】shell的 `ps -ef | grep $1 | grep -v "grep" | wc -l`返回错误值

0
悬赏园豆:10 [待解决问题]

这个程序是参照网上的,主要是为了防止脚本多次启动的,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

叶金鑫的主页 叶金鑫 | 初学一级 | 园豆:192
提问于:2014-05-18 10:01
< >
分享
所有回答(1)
0

我尝试了一次,启动一个脚本以后,按照你说的方法对脚本启动数量进行计算,得出的结果为1,如下:

------------------------------------

其返回结果为1

那么你的实例过程中出现的问题应该是,启动了两次noagain.sh脚本,如:

----------------------------

希望对你有所帮助。

 

 

欢迎关注本人博客: http://www.cnblogs.com/grass-and-moon/

grassofsky | 园豆:342 (菜鸟二级) | 2014-05-19 09:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册