Re: SSH Session mit allen Kindern terminieren

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 16 Aug 2006 10:46:08 +0200 (CEST)

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 message
Received on Wed 16 Aug 2006 - 10:48:19 CEST

search this site