• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

ps - die Prozesse mit der höchsten Prozessorleistung ausg?

exec.xml

Newbie
Hallo Linux-Clubber,

ich suche seit einigen Tagen eine elegante Konsolen-Lösung um Prozesse auszugeben die eine höhere CPU auslastung als x% haben...

Zuerst dachte ich mir ps aux | ein_kleines_java_tool_das_die_daten_
auswertet_und_gegebenfalls_eine_mail_verschickt

Hier gibts doch aber sicher noch eine Möglichkeit rein über die Konsole?

In der Manual / Info usw. hab ich auch schon geschaut und leider nichts gefunden.. googeln war auch nicht Ergebnisbringend. ;)

Weiß einer von Euch eine Lösung?

Grüße
trig
 
Eine direkte Lösung kann ich dir nicht anbieten. Ich persönlich würde das Ganze unter perl machen, da ich dort mit der stringmanipulation nach halbwegs klar komme. Als ersten Ansatz unter der Konsole würde ich auf den Punkt greppen der nur bei der Proz- und Speicherlast vorkommt und das über einen Vergleich mit dem vorgegebenen Wert von dir schicken. Damit wäre aber immer noch das Problem das er dann auch auf die Speicherlast anspringen würde.

Aber ich denke das einer unserer bash-experten dir sicherlich weiterhelfen kann.
 
OP
E

exec.xml

Newbie
Das mit der Auswertung ist eben auch mein Problem =/

Statt perl bin ich eher mit Java fit =)
Oder - was heißt fit - ich kann dort nen String teilen =P

Wenn das mit der Konsole nicht geht werd ich's auch so machen.
Also ein kleines Java-Tool schreiben..

Dachte nur das es rein über die Konsole eleganter wäre. :)
 
OP
E

exec.xml

Newbie
Habs:

Code:
ausgabe=/tmp/log.$$

. /etc/profile

ps -Aeo "%C %c" | awk '{ if ($1 > 12) { print $0 } }' > $ausgabe

gr=$(wc -c < $ausgabe)

if [ $gr > 1 ]
then

  mail -s "CPU Auslastung in kritischem Bereich" testda@testda.de < $ausgabe


fi

Schickt jetzt eine e-Mail mit den Prozessen die über 12% CPU auslastung sind.. - natürlich nur wenn auch einer über 12% ist ;)

Grüße[/code]
 
Java wtf!
Code:
ps ahx -o pcpu,pid,command | sort -g
und dann kannste entweder mit tail die Top10 Sucker rausfinden, oder statt sort
Code:
| perl -ne 'print if$_>12'
hintendran. Oder besser noch gleich `top` nehmen...
 
OP
E

exec.xml

Newbie
Hmm, nur mit top hab ich schon auch überlegt.. aber kann dann doch schlecht prüfen ob ein Prozess eine Auslastung über X% hat - und wenn ja, dann eine Mail verschicken oder?

Naja - hier auf jeden Fall nochmal das funktionierende Skript ;)
..auch wenn etwas umständlich :roll:


Code:
ausgabe=/tmp/log.$$

. /etc/profile

ps -Aeo "%C %c %p" | awk '{ if (int($1) > 25) { print $0 } }' > $ausgabe



if [ -s $ausgabe ]
then

  mail -s "CPU Auslastung in kritischem Bereich" test@test.de < $ausgabe


fi
 
Oben