博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP监控linux服务器负载
阅读量:6302 次
发布时间:2019-06-22

本文共 1157 字,大约阅读时间需要 3 分钟。

前面我们说到《》:http://www.ccvita.com/390.html,即是为本文做铺垫。在实际项目的应用中,我们由于各种条件的现实,利用PHP来实现服务器负载监控将是一种更为灵活的方式。

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

c程序

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

//note 由于wordpress编辑器的原因,请将此代码中头文件多余的空格去除
#include< stdio.h>
#include< stdlib.h>
#include< systypes.h>
#include< unistd.h>
 
int main()
{
    uid_t uid ,euid;
 
    //note 获得当前的uid
    uid = getuid();
    //note 获得当前euid
    euid = geteuid();
 
    //note 交换这两个id
    if(setreuid(euid, uid))
        perror("setreuid");
 
    //note 执行将要执行linux系统命令
    system("/usr/bin/w");
    return0;
}

编译该文件gcc -o w -Wall w.c,这时会在当前目录下生成程序w。
改变此程序的属主chmod u+s ./w。

 

 

PHP执行

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

< ?php
/*
        More & Original PHP Framwork
        Copyright (c) 2007 - 2008 IsMole Inc.
 
        $Id: serverMonitor.php 408 2008-12-02 08:07:40Z kimi $
*/
 
//note key的验证过程
if($key != $authkey) {
//        exit('key error);
}
 
$last_line = exec('/usr/local/ismole/w', $retval);
 
$returnArray = explode("load average: ", $retval[0]);
$returnString = $returnArray[1];
 
echo $returnString;

按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,SVN更新,服务器监控,备份,恢复,日常维护等等。比如《》:http://www.ccvita.com/383.html就可以上述这种方法来做。

转载地址:http://oayxa.baihongyu.com/

你可能感兴趣的文章
男人要内在美,更要外在美
查看>>
为什么要跟别人比?
查看>>
app启动白屏
查看>>
Oracle 提高查询性能(基础)
查看>>
学习知识应该像织网一样去学习——“网状学习法”
查看>>
Hadoop集群完全分布式安装
查看>>
QString,char,string之间赋值
查看>>
我的友情链接
查看>>
Nginx+mysql+php-fpm负载均衡配置实例
查看>>
shell脚本操作mysql数据库 (部份参考)
查看>>
MySql之基于ssl安全连接的主从复制
查看>>
informix的逻辑日志和物理日志分析
查看>>
VMware.Workstation Linux与windows实现文件夹共享
查看>>
ARM inlinehook小结
查看>>
wordpress admin https + nginx反向代理配置
查看>>
管理/var/spool/clientmqueue/下的大文件
查看>>
HTML学习笔记1—HTML基础
查看>>
mysql dba系统学习(20)mysql存储引擎MyISAM
查看>>
Win8转移应用商店的安装目录,用户目录
查看>>
centos 5.5 64 php imagick 模块错误处理记录
查看>>