PHP监控linux服务器负载
本文最后更新于 5431 天前,其中的信息可能已经有所发展或是发生改变。

前面我们说到《PHP执行linux系统命令》:https://kimi.pub/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");
    return 0;
}

编译该文件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更新,服务器监控,备份,恢复,日常维护等等。比如《利用SVN搭建测试服务器》:https://kimi.pub/383.html就可以上述这种方法来做

评论

  1. 15年前
    2009-4-25 21:04:05

    按照上面的实例,我们可以用PHP来做任何我们想执行的Linux系统命令,谢谢

  2. 14年前
    2009-12-04 15:09:52

    使用visudo将需要执行的命令和用户对应起来,也可以

  3. 14年前
    2009-12-24 10:10:57

    chmod u+s ./w 这个应该是设置suid位吧?

  4. 10年前
    2014-2-25 17:03:31

    1231231

  5. iscod
    10年前
    2014-3-11 14:03:17

    php类调用这个文件时,服务器当机,是不是占用资源较高?

  6. iscod
    10年前
    2014-3-11 14:10:44

    w.c头文件是systypes.h?还是sys/types.h?

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇