我想编写一个脚本(在linux上使用bash或Perl),它监视Apache并在超过X%CPU的情况下重启Apache。 我知道我需要获得Apache的总CPU使用率,因为它打开了子进程。
如何获取Apache的总CPU使用率?
答案 0 :(得分:3)
尝试以下操作,但请确保使用您的实际名称更新Apache进程名称(我的名字为httpd
):
ps u -C httpd | awk '{sum += $3} END {print sum}'
这将获得所有正在运行的apache进程的列表,并使用%CPU
对ps
输出的awk
列求和。
答案 1 :(得分:1)
这将返回父apache进程和所有子进程的总和,以百分比表示,没有任何其他信息,以便您可以以任何方式轻松使用此脚本:
ps --no-heading -o pcpu -C httpd | awk '{s+=$1} END {print s}'
答案 2 :(得分:0)
这将列出每个apache2进程的总CPU使用率:
ps u -C apache2 | awk '{print $3}' | grep -v "%CPU"
但请注意,即使当前CPU使用率很高,总的(=平均)CPU使用率也可能相当低,尤其是对于长时间运行的进程。