Apache を監視し、X% CPU を超えた場合に Apache を再起動するスクリプトを (Linux の bash または Perl で) 作成したいと考えています。子プロセスを開くため、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 使用率がかなり低くなる可能性があることに注意してください。