Shell Scripts was einen Prozess überwacht / beendet

Bash, Shell, PHP, Python, Perl, CGI
preussner
Posts: 19
Joined: 2006-02-15 16:16

Shell Scripts was einen Prozess überwacht / beendet

Post by preussner » 2006-07-28 14:06

servus

leider bin ich nicht so der held wen es um shell scripte geht.

also mein problem ist. das ich mehrer prozesse hab die gleich heisen aber manchmal einer spinnt und sich aufhängt.

zb.

Code: Select all

h848391:/# ps aux |grep zone
eqemu     4818  0.0  2.1  87288 22144 ?        Sl   Jul27   0:01 ./zone dynamic_01 pdadzs
eqemu     4836  0.0  0.8  87248  9108 ?        Sl   Jul27   0:00 ./zone dynamic_02 pdadzs
eqemu     4842  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_03 pdadzs
eqemu     4854  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_04 pdadzs
eqemu     4860  99.9  0.8  87248  9104 ?        Sl   Jul27   0:00 ./zone dynamic_05 pdadzs
eqemu     4866  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_06 pdadzs
eqemu     4872  0.0  0.8  87248  9108 ?        Sl   Jul27   0:00 ./zone dynamic_07 pdadzs
eqemu     4880  0.0  0.8  87248  9108 ?        Sl   Jul27   0:00 ./zone dynamic_08 pdadzs
eqemu     4892  0.0  0.8  87252  9112 ?        Sl   Jul27   0:00 ./zone dynamic_09 pdadzs
eqemu     4900  0.0  0.8  87252  9112 ?        Sl   Jul27   0:00 ./zone dynamic_10 pdadzs
eqemu     4906  0.0  0.8  87252  9112 ?        Sl   Jul27   0:00 ./zone dynamic_11 pdadzs
eqemu     4912  0.0  0.8  87248  9108 ?        Sl   Jul27   0:00 ./zone dynamic_12 pdadzs
eqemu     4920  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_13 pdadzs
eqemu     4930  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_14 pdadzs
eqemu     4938  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_15 pdadzs
eqemu     4944  0.0  0.8  87248  9108 ?        Sl   Jul27   0:00 ./zone dynamic_16 pdadzs
eqemu     4952  0.0  0.8  87252  9108 ?        Sl   Jul27   0:00 ./zone dynamic_17 pdadzs
eqemu     4958  0.0  2.2 100196 23532 ?        Sl   Jul27   0:01 ./zone dynamic_18 pdadzs
eqemu     4972  0.0  3.6 117164 38012 ?        Sl   Jul27   0:02 ./zone dynamic_19 pdadzs
eqemu     4978  0.0  4.0 120508 42400 ?        Sl   Jul27   0:04 ./zone dynamic_20 pdadzs
root     31114  0.0  0.0   3868   820 pts/3    R+   14:01   0:00 grep zone
so jetz will ich das die prozesse zone überprüft werden.
Und wenn einer dann 2 minuten 100 % oder 99.99 Prozessorlast hat beendet wir.

wie hier in dem beispiel

Code: Select all

eqemu     4860  99.9  0.8  87248  9104 ?        Sl   Jul27   0:00 ./zone dynamic_05 pdadzs
Wie gesagt kenn ich mich mit bash / shell scripten nicht so gut aus um das zu machen.

hoffe mal ihr könnt mir da helfen

Danke schon mal im vorraus.

Gruss Preussner

thorsten
RSAC
Posts: 732
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Shell Scripts was einen Prozess überwacht / beendet

Post by thorsten » 2006-07-28 14:22

Deine Prozesse mit mehr als 90% ausgeben:

Code: Select all

ps aux | grep qemu  | awk ' $3>=90 { print $3 "t" $2}'
99.9    4860
Hier also eine mögliche Lösung zum Töten der Prozesse mit mehr als 90%

Code: Select all

kill $(ps aux | grep qemu  | awk ' $3>=90 { print $2}')

captaincrunch
Userprojekt
Userprojekt
Posts: 7225
Joined: 2002-10-09 14:30
Location: Dorsten

Re: Shell Scripts was einen Prozess überwacht / beendet

Post by captaincrunch » 2006-07-28 14:31

Ungetestet einfach mal beispielhaft runtergetippert:

Code: Select all

#!/bin/sh
while true
do
HAENGT=`/bin/ps aux | /bin/grep zone | /bin/awk '{print $3}'`
if [ "$HAENGT" -eq "99.9" ];
    then HANGPID=`/bin/ps aux | /bin/grep zone | /bin/awk '{print $2}'`
         sleep 120
         HAENGTSNOCH=`/bin/ps aux | /bin/grep $HANGPID | /bin/awk '{print $3}'`
         if [ "$HAENGTSNOCH" -eq "99.9" ];
             then /bin/kill $HANGPID
         fi
    else
         exi 0
fi
done
Geht vermutlich auch erheblich schöner, einfacher, besser. So hast du aber mal nen Anhaltspunkt.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc

preussner
Posts: 19
Joined: 2006-02-15 16:16

Re: Shell Scripts was einen Prozess überwacht / beendet

Post by preussner » 2006-07-28 15:16

dake euch werde ich gleich mal testen

preussner
Posts: 19
Joined: 2006-02-15 16:16

Re: Shell Scripts was einen Prozess überwacht / beendet

Post by preussner » 2006-08-09 00:13

also ich hab das jetzt ne zeitlang laufen lassen und leider funkt es nicht.

Code: Select all

./zonecheck.sh: line 5: [: 0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
90.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0: integer expression expected
das ist die fehlermeldung beim aufrufen peer hand

lordy
Posts: 83
Joined: 2006-06-22 12:45

Re: Shell Scripts was einen Prozess überwacht / beendet

Post by lordy » 2006-08-10 18:54

Das Script von CaptainCrunch berücksichtigt nicht, das es mehrere zone-Prozesse gibt und kann daher nicht funktionieren.

Ich hab mal ein paar kleine Änderungen vorgenommen.

Code: Select all

#!/bin/sh
while true
do
HANGPID=`/bin/ps aux | /bin/grep zone | grep 99.9 | head -n 1 | /bin/awk '{print $2}'`
sleep 120
HAENGTSNOCH=`/bin/ps up $HANGPID | /bin/awk '{print $3}'`
if [ "$HAENGTSNOCH" -eq "99.9" ];
  then /bin/kill $HANGPID
fi
done