UNIX-判断程序是否已经运行的脚本在crontab与命令行下的不同

        crontab会定时启动脚本,而不管原来的脚本是否执行完毕,这在某些情况下是不能容忍的,详见http://blog.csdn.net/totuswhf/archive/2008/05/08/2416424.aspx.
         于是我写了个脚本cron_music.sh,其中判断是否已经启动,如果启动则直接退出:
          #!/bin/sh
        . $HOME/.cronprofile

           PROCEXIST=""
           PROCEXIST=`ps -ef|grep cron_music|grep -v grep|wc -l`

          if(test $PROCEXIST -ge 2)
          then
                  echo "program already exist!" >>$HOME/cron/cron_music.log
                  return;
           fi;
          sleep 120
          在命令行下执行,试验没有问题。
          放到crontab中死活就不会执行了。把PROCEXIST打印出来一看,执行一个计数已经是2,接着把`ps -ef|grep cron_music|grep -v grep`作为独立语句写到文件中,看到果然有两个进程,一个是sh -c path/cron_music.sh, 一个是/bin/sh cron_music.sh.
          原来是因为crontab会先执行一个sh -c,然后才执行到要执行的脚本。
          因此这个判断,要至少是ge 3才行。如果有两个程序要启动,计数是4。
         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值