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