[linux-l] Weltzeituhr

Steffen Dettmer steffen at dett.de
Do Nov 2 22:00:55 CET 2006


* Danijel Tasov wrote on Thu, Nov 02, 2006 at 20:00 +0100:
> This month's Useless Use of kill -9 award goes to...
> 
> Frank Reker wrote:
> >        kill -9 "$i"
> 
> No no no.  Don't use kill -9.
> 
> It doesn't give the process a chance to cleanly:
> 
> 1) shut down socket connections

macht ein gutes OS eh :)

> 2) clean up temp files

oft besser als ne Prozessleiche

> 3) inform its children that it is going away

da gibt's zum Glück killall -KILL <name> (nicht bei SunOS benutzen ;))

> 4) reset its terminal characteristics

tja, macht man halt ein neues xterm auf ;)

> and so on and so on and so on.
> 
> Generally, send 15, and wait a second or two, and if that doesn't work,
> send 2, and if that doesn't work, send 1.  

INT und HUP? komische Kombi, was?

> If that doesn't, REMOVE THE BINARY because the program is badly
> behaved!

hum... War das vor pthreads?

> Don't use kill -9.  Don't bring out the combine harvester just to tidy
> up the flower pot.

Ich find, es ist oft schlimmer. Ich würde sagen:

"and wait a second or two, and if that doesn't work, send KILL, and if
this works or not, kill the process session with TERM + 5 sec + KILL".

Leider kann das Kommandozeilen "kill" keine sessions killen (negative
PIDs), zumindestens meins nicht. Ich hab bei komischen deadlock
Problemen oder NFS hangs oder sowas öfter mal Prozess-Sessions gehabt,
wo der session leader mit -9 verabschiedet werden musste - und noch n
childs rumhingen. In meiner Software guckt meine daemon-Implementierung
nach, ob die PID aus dem PID-File stale ist, aber eine solche session
existiert, wird die auch gekillt. Richtig toll ist, wenn eine falsche
PID im PID-File steht, weil wegen reboot oder so ein anderer Prozess
diese PID hat. Daher kein kill auf die PID im PID-File. Das macht dann
das rc-script. In der Praxis wird dann halt u.U. irgendwas gekillt.
killall und SuSE's startproc haben die schönen Nachteil, dass man einen
Daemon nicht so einfach zweimal starten (und killen) kann, wenn die
Binaries gleich sind. Hier hilft ggf. ein Symlink. Aber alles nicht
wirklich schön. Eigentlich sogar ziemlich unschön. Vielleicht will Win
daher in solchen Fällen immer gleich booten lol

Richtig spassig wird es mit Java-Daemons. Da kann man von der JVM aus
kaum ein .pid-File schreiben sondern braucht dann spezielle
Wrapper-Skripte, die setsid und weiss ich was machen...

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.





Mehr Informationen über die Mailingliste linux-l