【问题标题】:get apache total cpu usage in (linux)获取(linux)中的apache总cpu使用率
【发布时间】:2012-11-27 21:52:22
【问题描述】:

我想编写一个脚本(在 linux 上使用 bash 或 Perl)来监视 Apache 并在它超过 X% CPU 时重新启动 Apache。 我知道我需要获取 Apache 的总 CPU 使用率,因为它打开了子进程。

如何获取 Apache 的总 CPU 使用率?

【问题讨论】:

    标签: linux apache cpu


    【解决方案1】:

    尝试以下方法,但请确保将 Apache 进程名称更新为您的实际名称(我的是 httpd):

    ps u -C httpd | awk '{sum += $3} END {print sum}'
    

    这将获得所有正在运行的 apache 进程的列表,并使用 awkps 的输出中的 %CPU 列求和。

    【讨论】:

    • ps u -C apache 返回一个空结果
    • @Shay 是 apache 你的 apache 进程的名称吗?我见过httpdapache2,但从未见过apache
    • 名称是 apache2 但使用 apache2 命令也返回空
    • @Shay 你可以试试ps u -U apache,在这种情况下,apache 是运行 Apache 的用户帐户。如果这不起作用,您能否验证 Apache 是否正在运行,如果是,请运行 ps aux 并显示输出,以便我们可以看到进程列表以获取进程或用户名?
    • 对所有apache子进程的cpu百分比求和是否正确?每个进程都可以在不同的 cpu 上运行,不是吗?
    【解决方案2】:

    这将返回父 apache 进程和所有子进程的总负载,以百分比表示,没有任何附加信息,以便您可以轻松地以任何方式使用此脚本:

    ps --no-heading -o pcpu -C httpd | awk '{s+=$1} END {print s}'
    

    【讨论】:

      【解决方案3】:

      这将列出每个 apache2 进程的总 CPU 使用率:

      ps u -C apache2 | awk '{print $3}' | grep -v "%CPU"
      

      但是请注意,即使当前 CPU 使用率很高,总(=平均)CPU 使用率也可能相当低,尤其是对于长时间运行的进程。

      【讨论】:

        猜你喜欢
        • 2013-02-27
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2016-03-24
        • 2013-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多