How to get CPU usage and RAM usage without exec?

前端 未结 5 2064
日久生厌
日久生厌 2020-11-28 05:19

How does VBulletin get the system information without the use of exec? Is there any other information I can get about the server without exec? I am interested i

5条回答
  •  执念已碎
    2020-11-28 05:41

    This is what I use on Linux servers. It still uses exec, but other questions point here as duplicate, and there is no [good] suggestion for those. It should work on every distro, but if it doesn't, try messing with $get_cores + 1 offset.

    CPU in percent of cores used (5 min avg):

    $exec_loads = sys_getloadavg();
    $exec_cores = trim(shell_exec("grep -P '^processor' /proc/cpuinfo|wc -l"));
    $cpu = round($exec_loads[1]/($exec_cores + 1)*100, 0) . '%';
    

    RAM in percent of total used (realtime):

    $exec_free = explode("\n", trim(shell_exec('free')));
    $get_mem = preg_split("/[\s]+/", $exec_free[1]);
    $mem = round($get_mem[2]/$get_mem[1]*100, 0) . '%';
    

    RAM in GB used (realtime):

    $exec_free = explode("\n", trim(shell_exec('free')));
    $get_mem = preg_split("/[\s]+/", $exec_free[1]);
    $mem = number_format(round($get_mem[2]/1024/1024, 2), 2) . '/' . number_format(round($get_mem[1]/1024/1024, 2), 2);
    

    Here is what's in the $get_mem array if you need to calc other facets:

    [0]=>row_title [1]=>mem_total [2]=>mem_used [3]=>mem_free [4]=>mem_shared [5]=>mem_buffers [6]=>mem_cached
    

    Bonus, here is how to get the uptime:

    $exec_uptime = preg_split("/[\s]+/", trim(shell_exec('uptime')));
    $uptime = $exec_uptime[2] . ' Days';
    

提交回复
热议问题