Page 1 of 1

Screen kann man nicht killen wieso nicht?

Posted: 2006-02-05 22:21
by teklab
Hallo also
ich starte ein Programm egal welches z.B. CS mit

screen -A -m -d -S serv17 ./hlds...startparameter

Der Screen läuft das Programm auch aber nun habe
ich ein stopskript welches das Programm wieder beendet
auf 20 anderen Server funktioniert es problemlos, habe
es bei Freunden getestet nur bei dem einen Debian Server
geht es nicht. Hier das Skript:

Code: Select all

#! /bin/sh

kill `ps aux | grep -v grep | grep -i screen | grep -i serv17 | awk '{print $2}'`
Bitte kann wer helfen?

Re: Screen kann man nicht killen wieso nicht?

Posted: 2006-02-06 00:37
by Roger Wilco
Schau dir die Ausgabe von

Code: Select all

ps aux | grep -v grep | grep -i screen | grep -i serv17 | awk '{print $2}'
an. Das sollte die PID des entsprechenden Prozesses ausgeben. Wenn es das nicht tut, entsprechend anpassen oder gleich alles wegwerfen und pkill benutzen. ;)
Am Elegantesten wäre es natürlich, die PID des Prozesses in eine Datei zu schreiben. Das müsste der hlds aber ggf. selbst unterstützen.

Re: Screen kann man nicht killen wieso nicht?

Posted: 2006-02-06 05:04
by isotopp
teklab wrote:

Code: Select all

kill `ps aux | grep -v grep | grep -i screen | grep -i serv17 | awk '{print $2}'`
ps aux listet Deine ganze Prozeßliste.
grep -v grep filtert die Ausgabe von "ps aux" um den "grep"-Prozeß, der auf jedenfall da drin ist.
grep -i screen sucht alle Vorkommen von "screen" in der Ausgabe von ps.
grep -i serv17 sucht alle Vorkommen von "serv17" in der Restausgabe.
awk so wie dort angewendet druckt dann die PID (Feld 2) in der Restausgabe.

Die Backticks ersetzen das ps ... awk-Kommando durch seine Ausgabe (eine PID).

kill sendet ein Signal, hier ein TERM-Signal, Nummer 15, Default an diese PID (die von screen serv17).

screen ignoriert ein TERM Signal. Verwendet ein anderes Signal.

Außerdem ein kleiner Trick: "grep -i [s]creen" statt "grep -v grep | grep -i screen" (Warum funktioniert das? :) )

Außerdem ein Hinweis: man skill, man pkill.