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개까지 잘라서 상당히 읽기 쉬운 방식으로 상위 5개를 나열할 수 있습니다( head -6
헤더도 포함하려고 하므로 를 사용).
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