Matthias Teege <matthias-dbsdq(at)mteege.de> wrote:
> ich lasse gelegentlich ein paar Leute auf einem FreeBSD Server
> Firefox ueber eine SSH Tunnel ausfuehren. Dabei kommt es vor, dass
> Sitzungen nicht sauber beendet werden und halbtote Firefoxe den
> eigenen Neustart blockieren. Der Nutzer bekommt dann die Mitteilung,
> dass bereits ein Firefox laeuft.
Ein Wrapper-Skript schreiben, das ggf. erst alte Firefox-
Prozesse des Benutzers killt (nötigenfalls mit -KILL),
und dann erst den neuen Firefox startet.
> Gelegentlich kommt es vor, dass
> sich Nutzer von mehreren Rechner gleichzeitig einloggen und Firefox
> starten.
Das sollten sie ohnehin besser nicht tun.
> Gibt es eine verlaessliche Moeglichkeit, einen SSH Tunnel inklusive
> aller Kindprozesse zu killen?
Ich weiß nicht, ob's Dir hilft, aber ich hatte mal ein
Skript geschrieben, das alle Child-Prozesse einer PID
findet und ausgibt:
http://www.secnetix.de/~olli/scripts/children
Wenn Du dem die PID des ssh-Prozesses des Users über-
gibst (sollte sich mit ps(1) leicht finden lassen),
kannst Du damit alle Child-Prozesse terminieren.
Voraussetzung ist allerdings, dass nicht irgendein
Prozess auf dem Weg zwischen dem ssh und dem Firefox
bereits terminiert ist -- dann werden nämlich seine
Kinder von init (PID 1) aufgelesen und sind nicht mehr
children des ssh-Prozesses.
> Kann ich einen haengenden Firefox
> irgendwie eindeutig identifizieren?
Ich glaube nicht, dass das verlässlich möglich ist.
Du kannst z.B. mit sockstat(1) nachschauen, ob ein
Firefox noch eine Verbindung zum X-Server offenhat --
wenn nicht, ist das ein eindeutiges Zeichen dafür, dass
er tot ist. Aber umgekehrt kann man nicht schließen,
dass er noch lebt, wenn er eine X-Verbindung hat.
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "[...] one observation we can make here is that Python makes an excellent pseudocoding language, with the wonderful attribute that it can actually be executed." -- Bruce Eckel To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Wed 16 Aug 2006 - 10:48:19 CEST