PHP获得liunx cpu使用率、内存使用率

1、CPU利用率

<?php

// more proc/stat 该文件记录了自系统启动以来的所有内核的相关数据
//shell_exec()     通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
$str = shell_exec('more /proc/stat');
//返回数据 cpu0 168465523 0 3935595 18 0 0 100205 0 0 0
//正则表达式:
//(cpu[0-9]?)[\s] 筛选出cpu0和空格    
//([0-9]+)[\s]  筛选出user时间    168465523和空格  单位(jiffies)  用户态的CPU时间 不包含 nice值为负进程。1jiffies=0.01秒
//([0-9]+)[\s]  筛选出nice时间    0和空格          单位(jiffies)  nice值为负的进程所占用的CPU时间
//([0-9]+)[\s]  帅选出system时间  3935595和空格    单位 (jiffies) 核心时间
//([0-9]+)[\s]  帅选出idle时间    18和空格         单位 (jiffies) 除硬盘IO等待时间以外其它等待时间
//([0-9]+)[\s]  帅选出iowait时间  0和空格          单位 (jiffies) 硬盘IO等待时间
//([0-9]+)[\s]  帅选出irq时间     0和空格          单位 (jiffies) 硬中断时间
//([0-9]+)[\s]  帅选出softirq时间 100205           单位 (jiffies) 软中断时间 

$pattern = "/(cpu[0-9]?)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)[\s]+([0-9]+)/";

//preg_match_all 帅选出匹配项
preg_match_all($pattern, $str, $out);
//计算cpu个数出去CPU总
echo "共有" . (count($out[1]) - 1) . "个CPU,每个CPU利用率如下:<br>";
for ($n = 1; $n < count($out[1]); $n++) {
    echo $out[1][$n] . "=" . (100 * ($out[2][$n] + $out[3][$n]) / ($out[2][$n] + $out[3][$n] + $out[4][$n] + $out[5][$n] + $out[6][$n] + $out[7][$n])) . "%<br>";
}

linux 下输入more /proc/stat命令:

root@am335x:~# more /proc/stat
cpu  168465523 0 3935595 18 0 0 100205 0 0 0
cpu0 168465523 0 3935595 18 0 0 100205 0 0 0
intr 269560070 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 88516691 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 173499956 0 32 0 36 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6986679 556673 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 31944228
btime 1607164264
processes 34786
procs_running 2
procs_blocked 0
softirq 284533728 0 172501338 345003 7704291 0 0 1 0 0 103983095

2.内存利用率

<?php

$str = shell_exec('more /proc/meminfo');
$pattern = "/(.+):\s*([0-9]+)/";
preg_match_all($pattern, $str, $out);
echo (100 * ($out[2][0] - $out[2][1]) / $out[2][0]);

linux 下命令 more /proc/meminfo 信息

root@am335x:~# more /proc/meminfo
MemTotal:         252148 kB
MemFree:           52300 kB
Buffers:               0 kB
Cached:           125532 kB
SwapCached:            0 kB
Active:            95324 kB
Inactive:          88756 kB
Active(anon):      65888 kB
Inactive(anon):      128 kB
Active(file):      29436 kB
Inactive(file):    88628 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:         58576 kB
Mapped:             3516 kB
Shmem:              7468 kB
Slab:              11132 kB
SReclaimable:       5732 kB
SUnreclaim:         5400 kB
KernelStack:         488 kB
PageTables:          440 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      126072 kB
Committed_AS:      81828 kB
VmallocTotal:     761856 kB
VmallocUsed:       11836 kB
VmallocChunk:     670716 kB

参考文件

php如何获得CPU,内存是使用率_php使用shell_exc函数获取cpu使用率_wjp@001的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dodo_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值