CPU使用率の高いプロセスを特定するシェルスクリプト
サーバでアラートが起きた際にすぐに調査ができない場合、sarコマンドを使うとアラート発生時の負荷状況の調査が行える。
ただ、CPU使用率が高くなっていたということは分かっても、どのプロセスが原因なのかは特定できない。
そこで、CPU負荷が高くなった際に、原因のプロセスを特定する簡易シェルスクリプトを作る。
CPU使用率が90%を超えるプロセスがあった場合はログに記録する。
#!/bin/bash
CPU_USAGE=`ps -A -O pcpu --sort -pcpu | head -n 2 | tail -n 1 | awk '{ print $2 }'`
if [ $CPU_USAGE -ge 90 ]; then
date >> cpu_usage.log
ps -A -O pcpu --sort -pcpu | head -n 6 | tail -n 5 >> cpu_usage.log
fi
このスクリプトに実行権限を付与して、
chmod +x cpu_usage.sh
touch cpu_usage.log
cronで1分おきに実行するようにすれば、過去に起きたCPU負荷の原因が特定できるようになる。
crontab -e
* * * * * $HOME/cpu_usage.sh