Um die CPU-Auslastung auf einem AIX-Server zu überwachen, verwende ich das folgende Skript, das alle 10 Minuten ausgeführt wird.
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
Falls die CPU-Auslastung jedoch über 90 % liegt, muss ich die 5 Prozesse auflisten, die die CPU am stärksten beanspruchen.
Wie erreiche ich das?
Antwort1
Sie können die Top 5 in einer einigermaßen lesbaren Weise auflisten, indem Sie die Spalten begrenzen, sie zuerst nach der höchsten CPU-Auslastung sortieren und dann auf die ersten 5 kürzen (mit head -6
, da wir auch die Überschriften einschließen möchten):
ps -eo pcpu,pid,args | sort -k 1 -r | head -6
Die Ausgabe sieht ungefähr so aus:
%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
Möglicherweise möchten Sie sich auch den Batchmodus () von GNU ansehen -b
.
Antwort2
Für einen tiefen Tauchgang ist es am besten,
tprof -skex sleep 10
Dadurch erhalten Sie einen detaillierten Bericht zu den Prozessen mit hoher CPU-Belastung und können dann die Nutzung nach Funktion und gemeinsam genutzten Bibliotheken aufschlüsseln.
Antwort3
Sie können den folgenden Befehl verwenden. Er stimmt mit der Topas-Ausgabe überein.
ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15