Linux 下PHP獲取服務器狀態CPU、MEM使用率、磁盤使用率、IP地址獲取、MAC地址獲取等信息記錄


獲取服務器狀態記錄使用的是SHELL命令方式進行獲取輸出結果  然后進行字符串拆分處理等方式進行獲取到自己有用信息

貼出獲取方式以及常用處理方式

<?PHP
    $fp = popen('執行SHELL命令', "r");
    $rs = '';
    while(!feof($fp)){
       $rs .= fread($fp, 1024);  
    }
    pclose($fp);
    //獲取到輸出結果 rs
    $info = explode("\n", $rs); //處理方式1  換行拆分
    $info2 = explode(",", $info[0]); //處理方式2 逗號拆分
    $info3 = trim($info2[0], '%Cpu(s)'); // 處理方式3  去掉左右字符串
    $info4 = preg_replace('/\s{2,}/', $rs); //處理方式4 字符串替換
    
    //根據自己需要的信息不同進行處理  組合處理

處理命令列表記錄

//獲取CPU使用率以及內存使用率
$fp = popen('top -b -n 2 | grep -E "(Cpu\(s\))|(KiB Mem)"', "r");
/*說明: 獲取兩次信息,因為只獲取一次數據不准確,但是造成返回緩慢,建議做成異步處理
處理方式
     $sys_info = explode("\n", $rs);
    $cpu_info = explode(",", $sys_info[2]);
    $cpu_usage = trim(trim($cpu_info[0], '%Cpu(s): '), 'us'); //百分比
    
       $mem_info = explode(",", $sys_info[3]); //內存占有量 數組
     $mem_total = trim(trim($mem_info[0], 'KiB Mem : '), ' total');
    $mem_used = trim(trim($mem_info[2], 'used'));
    $mem_usage = round(100 * intval($mem_used) /     intval($mem_total), 2); //百分比
*/
 
//獲取磁盤占用率
$fp = popen('df -lh | grep -E "^(/)"', "r");
    $rs = fread($fp, 1024);
    pclose($fp);
    $rs = preg_replace('/\s{2,}/', ' ', $rs);  //把多個空格換成 “_”
    $hd = explode(" ", $rs);

    $hd_avail = trim($hd[3], 'G'); //磁盤可用空間大小 單位G
    $hd_usage = trim($hd[4], '%'); //掛載點 百分比
//獲取MAC地址
 $fp = popen('lshw -c network | grep serial | head -n 1', "r");
    $rs = fread($fp, 1024);
    pclose($fp);
    $mac = explode(':', $rs);
    array_shift($mac);
   $macAddr = implode(':', $mac); //XX:XX:XX:XX:XX
//獲取內網IP地址
 $fp = popen('ip addr | grep inet | grep -v inet6', "r");

/**
    結果展示: 自己處理 
    inet 192.168.1.180/24 brd 192.168.1.255 scope global dynamic
    inet 172.20.175.225/28 brd 172.20.175.239 scope global dynamic
    inet 127.0.0.1/8 brd 127.255.255.255 scope global dynamic
**/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM