通过其命令名确定进程是否正在运行

时间:2011-09-08 05:47:47

标签: php cron pid

所以我运行了多个进程:N个工作线程和1个收集器线程。

我想确定收集器线程是否处于活动状态。

这些是来自pgrep php | xargs ps

的命令结果
  PID TTY      STAT   TIME COMMAND
 1682 ?        S      0:00 php /var/www/robot/twitterbot.php -t tokenstring -s tokensecretstring
 3744 ?        S      0:00 php /var/www/robot/twitterbot.php -t tokenstring -s tokensecretstring
 4972 ?        S      0:00 php /var/www/robot/twitterbot.php -t tokenstring -s tokensecretstring
 5215 pts/0    S      0:00 php twitterbot-collector.php

我希望能够确定收集器是否正在运行。我怎样才能做到这一点?

我计划每隔几分钟检查一次cron作业,然后在脚本死亡时执行脚本。

1 个答案:

答案 0 :(得分:0)

啊,durp。忘了我可以把它运行到php和子串中的变量....

解决方案:

exec("pgrep php | xargs ps", $result, $r2);
$found = false;
foreach($result as $r){
    if(strstr($r, 'twitterbot-collector')){
        $found = true;
    } 
}

if(!$found){
    system("php /var/www/robot/twitterbot-collector.php > /dev/null 2>/dev/null &");
}