您的位置:首页 > 运维架构 > Linux

管理Linux进程的监控类

2010-03-26 09:53 267 查看
/**
* Monitor		监控程序
* @author		yangyu <yangyu@sina.cn>
* @version		1.0_20100110
* @package		daemon
*/
<?php
class Monitor {

private $bin_php  = '/opt/bin/php';     // php执行文件路径
private $path_daemon = '/opt/www/daemon/deal/';	// daemon根目录
private $process = array(
'cron_test.php',  // crontab 测试
);

public function __construct() {

foreach($this->process as $process) {
if(!$this->checkpro($process)) $this->startpro($process);
}
return 1;
}

private function checkpro($process) {
$cmd = "ps -aef | grep '{$this->path_daemon}{$process}' | grep -v 'grep' | wc -l";
$fp = @popen($cmd, "r");
$num = @fread($fp, 512);
$num += 0;
@pclose($fp);
if($num<=0) return 0;
return 1;
}

private function startpro($process) {
$cmd = "{$this->bin_php} {$this->path_daemon}{$process} > /dev/null &";
$fp = @popen($cmd, "r");
if($fp) @pclose($fp);
}

}

?>


大概解释一下吧,属性和构造函数那块就不说了,主要就是检查进程和开始进程这两个方法,$cmd后面那条命令是取得cron_test.php在执行的进程数量,grep匹配,-v反转匹配,这个也不用说了吧,wc = word count, -l = -line,就是行数,如果<=0,就开始在系统后台执行,没什么太多东西,就是当做一个监控管理工具类来用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: