Speicher überwachen und Programm abschiesen

Post Reply
Message
Author
Leander Hanwald

Speicher überwachen und Programm abschiesen

#1 Post by Leander Hanwald »

Hi

Ich habe ein Problem mit einer Software das ich bisher nicht lösen konnte. Das Programm schnappt sich mehrmals täglich den gesamten Arbeitsspeicher. Es hat mehrere Child Prozesse. schiese ich einen davobn ab (mit "kill -9") werden alle Child neu gestartet und der speicher ist wieder frei. Soweit sogut, damit könnte ich leben. Leider muss ich das von Hand machen.

Kennt einer einen einfachen weg das zu Automatisieren?
Grundregel dabei: Der Speicher gilt als voll wenn er unter 10 MB geht, die Prozesse haben immer den gleichen Namen. Einen abschiesen reicht. Das ganze soll als Cron Job laufen der jede Minute den Status überprüft.

Hat einer eine Idee? Ein kleiner Script wäre Ideal, aber meine Bash und Perl kentnisse reichen dafür nicht aus :(

Rossi

Re: Speicher überwachen und Programm abschiesen

#2 Post by Rossi »

wenn das ein Programm mit einem PID file ist (schau mal unter /var/run) ist, dann mach doch einfach einen cronjob, der z.B. all 3h laüft mit:

kill -HUP `cat /var/run/programm.pid`

das startet den Hauptprozess neu (und damit auch alle Kinderprozesse).

Ansonsten, wenn Du nur ein Kind töten willst, wird es schwierig - Du mußt die Ausgabe von ps filtern ... da kann ich Dir leider nicht helfen.

ronny
Posts: 313
Joined: 24. Apr 2001 11:11
Location: Muehlacker, BW

Re: Speicher überwachen und Programm abschiesen

#3 Post by ronny »

besser wäre es zwar das problem zu lösen, anstatt ein hässlichen workaround zu basteln...

aber sei's drum

ps h -C befehl -o %mem
gibt den speicher verbauch in % aller prozesse zu dem befehl

mit bc kannst du die liste dann irgendwie aufsummieren und mit einem maximum vergleichen

dann kannst du einen der prozesse killen
ps h -C befehl -o pid | head --lines=1 | read PID && kill -9 $PID

Leander Hanwald

Re: Speicher überwachen und Programm abschiesen

#4 Post by Leander Hanwald »

Das killen ist nicht das problem, sondern eher wie ich den nun den Speicher teste und die entscheidung treffe ob ich nun abschiese oder nicht. Müsste doch mit einem Bash Script möglich sein oder? (ich nutze es zu selten ;) )

klaro

Re: Speicher überwachen und Programm abschiesen

#5 Post by klaro »

Hallo LH,
um zu ueberpruefen ob der freie Speicher kleiner 10000 KB ist, kannst du folgendes Kontrukt verwenden

code

grep MemFree: /proc/meminfo |awk '{if ($2<10000) print "OK"
else
print "Falsch"
}'

code ende

Damit ueberpruefst du die 2. Spalte ($2) der Ausgabe des grep Befehls. Das ist zwar kein Meisterwerk an Code, aber immerhin eine Loesung. Waere schoen wenn sich Jochen mal dazu aeussern koennte.

Gruß
Klaro

klaro

Re: Speicher überwachen und Programm abschiesen

#6 Post by klaro »

Hallo LH,
um zu ueberpruefen ob der freie Speicher kleiner 10000 KB ist, kannst du folgendes Kontrukt verwenden

code

grep MemFree: /proc/meminfo |awk '{if ($2<10000) print "OK"
else
print "Falsch"
}'

code ende

Damit ueberpruefst du die 2. Spalte ($2) der Ausgabe des grep Befehls. Das ist zwar kein Meisterwerk an Code, aber immerhin eine Loesung. Waere schoen wenn sich Jochen mal dazu aeussern koennte.

Gruß
Klaro

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Speicher überwachen und Programm abschiesen

#7 Post by hjb »

Hi,

die richtige Lösung ist ulimit.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Post Reply