我现在的写法是这样的,但是不管我的脚本跑没跑$tmp打印出来都是array([0]=>1)$str="grep sh $fname|wc -l"; //查看脚本是否在执行
exec($str,$tmp,$return_val);望高人们指点

解决方案 »

  1.   

    要注意运行的权限如果你的脚本是其他用户而不是web用户运行的,grep sh $fname|wc -l可能取不到值
      

  2.   

    问题是我这里已经取到值咯,就是 array([0]=>1) ,但是就是一直都是这个值,不管脚本有没在跑都是,所以纠结ing...
      

  3.   

    grep sh $fname|wc -l
    直接在linux上运行的结果也是1吗?
      

  4.   

    貌似你这个命令不对,你应该用
    ps -ef | grep $filename | wc -l来取值如果值大于1就是在运行
      

  5.   

    因为你执行ps -ef | grep $filename这句本身就是一个匹配值
    比如有一个httpd进程,如果你用ps -ef | grep httpd去执行就会返回两条记录
    一个是httpd本身进程,一个就是ps -ef | grep httpd进程,所以wc -l的值是2你现在的问题应该是你的脚本不是驻留的程序,执行后就关闭了,所以返回的始终是1,就是或脚本没有驻留在进程中。
      

  6.   

    wc是统计文件的命令,在这里有什么用?
    ps -e | grep 进程名 就行了
      

  7.   

    参照8L的说法让脚本一直循环跑在里面以后用ps -ef | grep $filename取出来的结果还是1....
      

  8.   

    你用ps -ef 看看进程里面有你的脚本吗!?
      

  9.   

    没有...
    怎么会server_status里面一直有这个进程,但是却匹配不到呢?
      

  10.   

    终于搞定了,是请求不能用apache去跑,一旦用apache跑得话就被解析成http进程不能被ps -ef|grep XXX匹配到了而用ps -ef|grep XXX 匹配出的进程的输出结果又包括 sh -c ps aux | grep XXX 和 grep XXX 这两个进程,所以ps -ef|grep XXX至少能匹配到3条进程信息
    感谢楼上的各位高手,尤其是CunningBoy同志...