RSS Feed abonnieren

/proc/stat mit Bash auswerten

27. März 2010

Ich wollte die aktuelle CPU Auslastung per Bashscript ermitteln, so wie sie auch unter top angezeigt wird. Nach einigem suchen wurde ich bei einem Script fündig, welches sehr anschaulich verdeutlichte wie dies realisiert werden kann. Auf dessen Basis habe ich mir mein eigenes Script entwickelt.

#!/bin/bash                             
 
# /proc/stat 2x auslesen
BEFORE=(`cat /proc/stat | grep '^cpu '`)
sleep 1                                 
AFTER=(`cat /proc/stat | grep '^cpu '`) 
 
# Differenz berechnen
USER=`expr ${AFTER[1]} - ${BEFORE[1]}`
NICE=`expr ${AFTER[2]} - ${BEFORE[2]}`
SYSTEM=`expr ${AFTER[3]} - ${BEFORE[3]}`
IDLE=`expr ${AFTER[4]} - ${BEFORE[4]}`
ALL=`expr ${USER} + ${NICE} + ${SYSTEM} + ${IDLE}`
 
# Prozente berechnen
PUSER=`expr $USER \* 1000000 / $ALL`
PNICE=`expr $NICE \* 1000000 / $ALL`
PSYSTEM=`expr $SYSTEM \* 1000000 / $ALL`
PIDLE=`expr $IDLE \* 1000000 / $ALL`
 
# Prozente formatieren
for i in 10 100 1000 10000 100000 ; do
        if [ $PUSER -lt $i ] ; then
                PUSER="0${PUSER}"
        fi
        if [ $PNICE -lt $i ] ; then
                PNICE="0${PNICE}"
        fi
        if [ $PSYSTEM -lt $i ] ; then
                PSYSTEM="0${PSYSTEM}"
        fi
        if [ $PIDLE -lt $i ] ; then
                PUSER="0${PIDLE}"
        fi
done
 
# ausgeben
echo "us: ${PUSER:0:2}.${PUSER:2:4}%"
echo "ni: ${PNICE:0:2}.${PNICE:2:4}%"
echo "sy: ${PSYSTEM:0:2}.${PSYSTEM:2:4}%"
echo "id: ${PIDLE:0:2}.${PIDLE:2:4}%"

Die Ausgabe sieht dann beispielsweise so aus:

us: 00.9900%
ni: 00.0000%
sy: 00.4950%
id: 98.5148%

Tags: , ,

2 Antworten zu “/proc/stat mit Bash auswerten”

  1. Paul Colby
    5. Juli 2010 um 05:40 Uhr

    Nicely done! Thanks for the link back :)

    paul.

  2. PHP Grundkurs
    19. August 2012 um 19:07 Uhr

    Danke das habe ich gesucht!

Kommentar?

Hinweise zum Datenschutz siehe Impressum

*

tempo@deruwe.de jl@deruwe.de