PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : prozesse töten



MrIch
21-05-2002, 09:45
ich baue gerade ein init.d Skript für squid mit dem Virenscanner Modul v_scan...

V_scan greift auf mehrere ScannerDaemon Prozesse zu:
1633 pts/2 S 0:00 /usr/java/j2re1.4.0/bin/java -jar /opt/openantivirus/ScannerDaemon.jar /opt/openantivirus/sig/virussignatures.txt.signed
1670 pts/2 S 0:00 /usr/java/j2re1.4.0/bin/java -jar /opt/openantivirus/ScannerDaemon.jar /opt/openantivirus/sig/virussignatures.txt.signed
blablabla noch ungefähr 5 weitere, sehen alle genauso aus, haben nur andere pids...

Doch wie beende ich diese Teile sauber?
Bisher habe ich immer killall java dafür verwendet, doch die killall Lösung kann man ja wohl nicht als sauber bezeichnen...

MrIch
21-05-2002, 10:03
ich habe das nun so gelöst:

ps -ax |grep java | awk '{print "kill " $1;}'| sh

doch das Problem ist, dass ja der grep selber auch in den Prozessen steht...
deshalb bekomme ich immer eine Fehlermeldung...

anda_skoa
21-05-2002, 12:09
Wenn du das grep selbst weghaben wisllt kannst du den grep output nochmal durch grep -v grep pipen.

Du könntest dir die PIDs er Prozess auch beim Starten in ein oder mehrere PID files schreiben.

Dafür gibts das Verzeichnis /var/run

Die PIDs bekommst du beim Starten mit $!
Das enthält immer die PID des zuletzt gestarteten Prozesses.

also zB:


/usr/bin/programm1
PID1=$!
/usr/bin/programm2
PID2=$!


Ciao,
_

lankin
31-05-2002, 15:14
oder einfach alles in einem:

ps -ax | awk '/java/ { s="kill "$1; system(s) } '

um ganz sicher zu gehen das awk sich nicht selbst
abschiesst:

ps -ax | awk '/java/ && !/awk/ { s="kill "$1; system(s) } '

hier hast du auch noch die möglichkeit einiges zu
verfeinern, je nach wunsch.

gruss
lankin