gpt4 book ai didi

php - 在 PHP 中解析 linux "top"?

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:05 24 4
gpt4 key购买 nike

我正在开发一个 PHP 监控工具。它应该按 PID 显示单个进程的 % cpu 使用率。请记住,我不能使用 ps,因为它需要总使用量并将其除以进程运行的时间。这就是平均使用情况。我需要 php 文件运行时的用法。

这就是我正在尝试的,它似乎接近我在终端中需要的东西,但 php 不会打印任何东西。

$cmd = "top -n 1 -p 30100";
echo exec($cmd);

是否有其他更好的方法?如果实用程序提供我需要的功能,我可以安装它们。

TL;DR 我需要通过 PID 获取进程的 %cpu,尽可能简单以避免解析

最佳答案

知道没有瞬时 CPU 使用率 % 这样的东西。这就像游戏中的 FPS:只有在询问特定时间间隔时才有意义。在任何特定时刻,进程的 CPU 使用率只是"is"或“否”。没有百分比。

Could I somehow create a script that runs for one second, for example? And checks the usage in that second?

当然。如果你想自己做,你可以解析/proc/<pid>/stat并拉出 utimestime字段——分别是第 14 个和第 15 个整数。等一下,比如说,然后看看这些字段改变了多少。

参见 man proc有关此文件中字段的完整说明。

手册页说单位是时钟滴答,其中每秒的滴答数是可变的(C 函数 sysconf(_SC_CLK_TCK) 给出了数字)。在我(公认的有限)经验中,单位只是 1/100 秒。意思是将这些数字除以 100 得到秒数。

Could you please provide a snippet of how I would do that? I'm not that experienced. Here's how I imagine doing it, maybe a 10 cycle for() with a 100ms sleep, then calculate based on the ten values?

不需要采集两个以上的样本。

关于php - 在 PHP 中解析 linux "top"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29550395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com