PHP监控linux服务器负载情况分析解决方案

  由于Web Server以及PHP的实现方式所限,我们在消防泵现实环境中很难利用PHP去调用一些Linux中需要root权限才能执行的程序,对此,我从网上找到另外一种方式来绕开这个限制。首先先写个c程序中转调用系统命令,然后用PHP去执行此c程序。

  c程序

  首先写个c文件,比如/usr/local/ismole/w.c

  1.//note 由于wordpress编辑器的原因,请将此代码中头文件多余的空格去除消防泵

  2.#include < stdio.h>

  3.#include < stdlib.h>

  4.#include < systypes.h>

  5.#include < unistd.h>

  6.

  7.int main()

  8.{

  9.    uid_t uid ,euid;

  10.

  11.    //note 获得当前的uid

  12.    uid = getuid();

  13.    //note 获得当前euid

  14.    euid = geteuid();

  15.

  16.    //note 交换这两个id

  17.    if(setreuid(euid, uid))

  18.        perror("setreuid");

  19.

  20.    //note 执行将要执行linux系统命令

  21.    system("/usr/bin/w");

  22.    return 0;

  23.}

  //note 由于wordpress编辑器的原因,请将此代码中头文件多余的空格去除

  编译该文件gcc -o ipt -Wall w.c,这时会在当前目录下生成程序w。

  改变此程序的属主chmod u+s ./w。

  PHP执行

  文件内容如下,放在web目录下,访问就会输出当前的服务器负载情况。

  1.< ?php

  2.//note key的验证过程

  3.if($key != $authkey) {

  4.//        exit('key error);

  5.}

  6.

  7.$last_line = exec('/usr/local/ismole/w', $retval);

  8.

  9.$returnArray = explode("load average: ", $retval[0]);

  10.$returnString = $returnArray[1];

  11.

  12.echo $returnString;

  按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控南京,备份,恢复,日常维护等等。比如《利用SVN搭建测试服务器》

消防泵相关信息请访问:

posted @ 2012-01-13 15:30  蓝色的天空下  阅读(198)  评论(0编辑  收藏  举报
google