
Hallo, ich würde gerne die CPU-Last meines Linux-Servers mit einem Shell-Skript auslesen. Wie komme ich an User-, System-, Nice- und Idle-Load ran? Viele Grüße Bastian

Hallo Bastian, hallo Leute, Am Sonntag, 2. Januar 2005 03:11 schrieb Bastian Schern:
Aus /proc/loadavg auslesen oder top -n1 -b | head -n5 auswerten. Gruß Christian Boltz -- Spätestens dabei handelt es sich um Filtereffekte, die ImageMagick bestimmt nicht beherrschen kann. Sollten sie _das_ nachprogrammiert haben, würde ich barfuß hinlaufen und ihnen ein halbes Schwein opfern ob ihrer Genialität. [Ratti in suse-linux]

Christian Boltz schrieb:
Vielen Dank für die vielen Anregungen. Ich habe das jetzt so implementiert: SYS_INFO=$(top -n 1 -b | head -n 5) TASKS_RUNNING=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $4}' | sed -e 's/\%//') TASKS_SLEEPING=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $6}' | sed -e 's/\%//') TASKS_STOPPED=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $8}' | sed -e 's/\%//') TASKS_ZOMBIE=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $10}' | sed -e 's/\%//') CPU_USER=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $2}' | sed -e 's/\%//') CPU_SYS=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $4}' | sed -e 's/\%//') CPU_NICE=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $6}' | sed -e 's/\%//') CPU_IDLE=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $8}' | sed -e 's/\%//') Geht das vielleicht auch einfacher? Viele Grüße Bastian

Am Montag, 3. Januar 2005 10:04 schrieb Bastian Schern:
[CPU]
Geht das vielleicht auch einfacher?
bei den zwei Ausgaben (die anderen gehen sicher analog) TEMP=`echo "$SYS_INFO" | head -n2 | tail -n1` TASKS=( ${TEMP//[^[:digit:]]/ } ) TEMP=`echo "$SYS_INFO" | head -n3 | tail -n1` CPU=( ${TEMP//[^[:digit:]^.]/ } ) jetzt hast Du 2 Arrays (TASKS und CPU) und hier stehen die einzelnen Werte drin. Auf die einzelnen Werte kannst Du dann z.B. mit ${CPU[i]} zugreifen Gruss Andreas

Hallo Bastian, hallo Leute, Am Sonntag, 2. Januar 2005 03:11 schrieb Bastian Schern:
Aus /proc/loadavg auslesen oder top -n1 -b | head -n5 auswerten. Gruß Christian Boltz -- Spätestens dabei handelt es sich um Filtereffekte, die ImageMagick bestimmt nicht beherrschen kann. Sollten sie _das_ nachprogrammiert haben, würde ich barfuß hinlaufen und ihnen ein halbes Schwein opfern ob ihrer Genialität. [Ratti in suse-linux]

Christian Boltz schrieb:
Vielen Dank für die vielen Anregungen. Ich habe das jetzt so implementiert: SYS_INFO=$(top -n 1 -b | head -n 5) TASKS_RUNNING=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $4}' | sed -e 's/\%//') TASKS_SLEEPING=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $6}' | sed -e 's/\%//') TASKS_STOPPED=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $8}' | sed -e 's/\%//') TASKS_ZOMBIE=$(echo "$SYS_INFO" | head -n 2 | tail -n 1 | \ awk '{print $10}' | sed -e 's/\%//') CPU_USER=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $2}' | sed -e 's/\%//') CPU_SYS=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $4}' | sed -e 's/\%//') CPU_NICE=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $6}' | sed -e 's/\%//') CPU_IDLE=$(echo "$SYS_INFO" | head -n 3 | tail -n 1 | \ awk '{print $8}' | sed -e 's/\%//') Geht das vielleicht auch einfacher? Viele Grüße Bastian

Am Montag, 3. Januar 2005 10:04 schrieb Bastian Schern:
[CPU]
Geht das vielleicht auch einfacher?
bei den zwei Ausgaben (die anderen gehen sicher analog) TEMP=`echo "$SYS_INFO" | head -n2 | tail -n1` TASKS=( ${TEMP//[^[:digit:]]/ } ) TEMP=`echo "$SYS_INFO" | head -n3 | tail -n1` CPU=( ${TEMP//[^[:digit:]^.]/ } ) jetzt hast Du 2 Arrays (TASKS und CPU) und hier stehen die einzelnen Werte drin. Auf die einzelnen Werte kannst Du dann z.B. mit ${CPU[i]} zugreifen Gruss Andreas
participants (5)
-
Andreas Loesch
-
Bastian Schern
-
Can-Carlo Dörtbudak
-
Christian Boltz
-
Ekkard Gerlach