AIXサーバーでCPU使用率を監視するために、10分ごとに実行される次のスクリプトを使用しました。
lparstat 2 10 > cpu
usage=$(tail -10 cpu | awk 'BEGIN {sum=0;} {sum+=$4} END{print int(100-sum/10)}')
if [[ $usage -ge 90 ]]; then
# mail the error and cpu file to admin
# displaying this for testing purposes
echo "CPU usage off the charts!!!"
cat cpu
fi
ただし、CPU使用率が90%を超える場合は、CPUを使用する上位5つのプロセスを一覧表示する必要があります。
どうやってこれを達成できますか?
答え1
列を制限し、最も高いCPU使用率に基づいて最初に並べ替えてから上位5つまで切り取り、head -6
かなり読みやすい方法で上位5つを一覧表示することができます(ヘッダーも含めたいので、使用)。
ps -eo pcpu,pid,args | sort -k 1 -r | head -6
出力は次のとおりです。
%CPU PID COMMAND
2.0 30531 -bash
0.0 30673 head -6
0.0 30672 sort -k 1 -r
0.0 30671 ps -eo pcpu,pid,args
0.0 30670 [flush-253:0]
top
GNUのバッチモード()を見ることもできます-b
。
答え2
ディープダイビングのための最良の方法は走ることです。
tprof -skex sleep 10
これにより、どのプロセスが高いCPUを使用しているかを詳細に説明するレポートが提供され、機能と共有ライブラリの使用量を詳しく調べることができます。
答え3
topas 出力に一致する次のコマンドを使用できます。
ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15