Hallo. Habe gerade einige Manpage von XFree überflogen, aber nichts relevantes gefunden. Mein Frage ist, wie beende ich X auf einer bestimmten Konsole. Mit Strg+Alt+Backspace kann ich den Server 'abschießen/killen'. Es wird doch sicher eine 'freundlichere' Variante dazu geben, oder? Ich dachte, dass ich das über den Session-Manager von XFree realisieren kann. Aber das war eher lächerlich, als funktionsfähig. :-( Hab ihr eine Idee, oder kennt sogar die Lösung des Geheimnisses? Gruß Marcus
Hallo, Am Sun, 02 May 2004, Marcus Habermehl schrieb:
Habe gerade einige Manpage von XFree überflogen, aber nichts relevantes gefunden.
Mein Frage ist, wie beende ich X auf einer bestimmten Konsole. Mit Strg+Alt+Backspace kann ich den Server 'abschießen/killen'.
Beende den Prozess, denn X als erstes gestartet hat, i.d.R ist das ein Windowmanager. Das kannst du ueber's normale Ausloggen des WMs machen, du kannst aber auch ein 'kill -TERM PID_DES_PROGRAMMS' machen. Oder wenn der WM haengt, dann mit 'kill -TERM PID_DES_XSERVERS'. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Am Mo, 2004-05-03 um 02.32 schrieb David Haller:
Hallo,
Am Sun, 02 May 2004, Marcus Habermehl schrieb:
Habe gerade einige Manpage von XFree überflogen, aber nichts relevantes gefunden.
Mein Frage ist, wie beende ich X auf einer bestimmten Konsole. Mit Strg+Alt+Backspace kann ich den Server 'abschießen/killen'.
Beende den Prozess, denn X als erstes gestartet hat, i.d.R ist das ein Windowmanager. Das kannst du ueber's normale Ausloggen des WMs machen, du kannst aber auch ein 'kill -TERM PID_DES_PROGRAMMS' machen.
Oder wenn der WM haengt, dann mit 'kill -TERM PID_DES_XSERVERS'.
Das ist mir alles bekannt und klar. Mir geht es eher darum, dass ich ab und zu zum Test eines neuen WMs X manuell von der Kommandozeile mit X :1 & starte. In dem Moment wird X zwar von mir, als User ausgeführt, aber mit der Berechtigung von root. Somit müsste ich zum Beenden des X-Servers immer den Server mit Gewalt und als root beenden. Und genau das ist das, was ich vermeiden wollte. Speziell spiele ich mit dem Gedanken, mir ein Skript zu schreiben, mit dem ich den X-Server starten, einen WM wählen und auf Wunsch X beenden kann. Ähnlich wie selectwm. Nur etwas mehr auf mich zugeschnitten. Hat also nichts damit zu tun, dass sich etwas aufhängt. Und kill ist ja nicht unbedingt die übliche Art Programme zu beenden. Gruß Marcus
Hallo, Am Mon, 03 May 2004, Marcus Habermehl schrieb:
Am Mo, 2004-05-03 um 02.32 schrieb David Haller:
Beende den Prozess, denn X als erstes gestartet hat, i.d.R ist das ein Windowmanager. Das kannst du ueber's normale Ausloggen des WMs machen, du kannst aber auch ein 'kill -TERM PID_DES_PROGRAMMS' machen.
Oder wenn der WM haengt, dann mit 'kill -TERM PID_DES_XSERVERS'.
Das ist mir alles bekannt und klar. Mir geht es eher darum, dass ich ab und zu zum Test eines neuen WMs X manuell von der Kommandozeile mit X :1 & starte.
In dem Moment wird X zwar von mir, als User ausgeführt, aber mit der Berechtigung von root.
Somit müsste ich zum Beenden des X-Servers immer den Server mit Gewalt und als root beenden.
Nein. Du startest doch sicher gleich den WM mit, oder? Dann reicht es, wenn du diesen dann beendest. Egal wie (s.u.).
Und kill ist ja nicht unbedingt die übliche Art Programme zu beenden.
Entweder sie beenden sich selbst (z.B. ein "ls") oder sie laufen so lange, bis sie "irgendwie" die Nachricht bekommen, sich zu beenden. Das sind speziell zum "geordneten" Beenden: SIGTERM (15) : Terminate (Alt+F4 in KDE schickt genau dieses Signal) SIGINT (2) : Interrupt (Strg+c) "Abschiessen" (z.B. auch mit xkill) entspricht SIGKILL (9). Die Signale kann der WM / die Konsole schicken (s.o. Alt+F4, Strg+c), genauso gut und "sauber" ist, das Signal mit "kill -SIGSPEC" zu schicken. Auf ein SIGTERM sollte ein WM genau so reagieren wie auf einen Klick auf "Ausloggen" / "Exit" o.ae. Ein kill -TERM `pidof wmaker` ist also eine saubere Variante Windowmaker zu beenden. Schau dir evtl. mal 'pstree' ab der PID des jew. "startx" an, z.B.: $ pstree `ps x | awk '/[s]tartx.*'$WINDOWMANAGER'/{print $1;}'` startx---xinit-+-X `-wmaker-+-wmsetbg |-xclock `-xemacs---gnuserv *hehe* Vergleich das mal mit KDE ;)) Die xterms, die per Menue aufrufe haben komischerweise nicht wmaker als parent-Prozess oben fehlen also noch 3 xterms, mutt, und im Moment nur ein gnuclient, sowie das pstree selbst. Alternativ koenntest du den WM u.U. mit 'startproc -f /var/run/$WINDOWMANAGER.pid' starten, dann hast du auch gleich noch ein pidfile fuer ein kill -TERM `cat /var/run/$WINDOWMANAGER.pid` HTH & HAND, -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Am Di, 2004-05-04 um 01.34 schrieb David Haller:
Hallo,
Am Mon, 03 May 2004, Marcus Habermehl schrieb:
Am Mo, 2004-05-03 um 02.32 schrieb David Haller:
Beende den Prozess, denn X als erstes gestartet hat, i.d.R ist das ein Windowmanager. Das kannst du ueber's normale Ausloggen des WMs machen, du kannst aber auch ein 'kill -TERM PID_DES_PROGRAMMS' machen.
Oder wenn der WM haengt, dann mit 'kill -TERM PID_DES_XSERVERS'.
Das ist mir alles bekannt und klar. Mir geht es eher darum, dass ich ab und zu zum Test eines neuen WMs X manuell von der Kommandozeile mit X :1 & starte.
In dem Moment wird X zwar von mir, als User ausgeführt, aber mit der Berechtigung von root.
Somit müsste ich zum Beenden des X-Servers immer den Server mit Gewalt und als root beenden.
Nein. Du startest doch sicher gleich den WM mit, oder? Dann reicht es, wenn du diesen dann beendest. Egal wie (s.u.).
Nein. Ich habe auf meinem Rechner einen User test angelegt. Unter dem Teste ich immer neue Programme oder WMs, damit ich mir ~/ nicht mit Müll vollstopfe oder etwas verstelle. Daher starte ich eine grafische Sitzung für test mit folgendem. X :1 & export DISPLAY=':1.0' metacity & # Wenn ich einen WM brauche (bei Programmen) programm & # Oder halt den kompletten WM; dann fällt metacity weg Somit lässt sich X nicht ohne weiteres beenden. Selbst mit fg komme ich nicht mehr drann. X wurde einfach root zugeordnet.
Und kill ist ja nicht unbedingt die übliche Art Programme zu beenden.
Entweder sie beenden sich selbst (z.B. ein "ls") oder sie laufen so lange, bis sie "irgendwie" die Nachricht bekommen, sich zu beenden. Das sind speziell zum "geordneten" Beenden:
SIGTERM (15) : Terminate (Alt+F4 in KDE schickt genau dieses Signal) SIGINT (2) : Interrupt (Strg+c)
"Abschiessen" (z.B. auch mit xkill) entspricht SIGKILL (9).
Die Signale kann der WM / die Konsole schicken (s.o. Alt+F4, Strg+c), genauso gut und "sauber" ist, das Signal mit "kill -SIGSPEC" zu schicken.
Auf ein SIGTERM sollte ein WM genau so reagieren wie auf einen Klick auf "Ausloggen" / "Exit" o.ae. Ein
kill -TERM `pidof wmaker`
Wie schicke ich diese Signale? Also SIGTERM UND SIGINT. Auch mit kill? Denke mal, dass da killproc eher die Lösung wäre. Oder? [...]
Alternativ koenntest du den WM u.U. mit 'startproc -f /var/run/$WINDOWMANAGER.pid' starten, dann hast du auch gleich noch ein pidfile fuer ein
kill -TERM `cat /var/run/$WINDOWMANAGER.pid`
Ist startproc hier nur ein Synonym? Denn als Befehl gibts das bei mir nicht. Auch YaST2 schweigt sich dabei aus. Gruß Marcus
Hallo, Am Sat, 08 May 2004, Marcus Habermehl schrieb:
Am Di, 2004-05-04 um 01.34 schrieb David Haller: [..] Nein. Ich habe auf meinem Rechner einen User test angelegt. Unter dem Teste ich immer neue Programme oder WMs, damit ich mir ~/ nicht mit Müll vollstopfe oder etwas verstelle.
Daher starte ich eine grafische Sitzung für test mit folgendem.
X :1 & export DISPLAY=':1.0' metacity & # Wenn ich einen WM brauche (bei Programmen) programm & # Oder halt den kompletten WM; dann fällt metacity weg
Somit lässt sich X nicht ohne weiteres beenden. Selbst mit fg komme ich nicht mehr drann. X wurde einfach root zugeordnet.
Nicht gut. Verwende: export DISPLAY=":1" export WINDOWMANAGER="/usr/X11R6/bin/metacity" startx $WINDOWMANAGER -- :1 bzw.: export DISPLAY=":1" export WINDOWMANAGER="/pfad/zu/programm" startx $WINDOWMANAGER -- :1 Dann klappt das auch mit dem Beenden. X ist es egal, ob das Programm wirklich ein Windowmanager ist. [..]
Auf ein SIGTERM sollte ein WM genau so reagieren wie auf einen Klick auf "Ausloggen" / "Exit" o.ae. Ein
kill -TERM `pidof wmaker`
Wie schicke ich diese Signale? Also SIGTERM UND SIGINT. Auch mit kill?
Steht da doch: kill -TERM PID_VON_PROGRAMM kill -INT PID_VON_PROGRAMM Siehe 'kill -l' und man 7 signal
Denke mal, dass da killproc eher die Lösung wäre. Oder?
Nur wenn du das Programm per 'startproc' startest. [..]
Ist startproc hier nur ein Synonym? Denn als Befehl gibts das bei mir nicht. Auch YaST2 schweigt sich dabei aus.
Der ist auch in /sbin. Schau mal in 'man startproc'. Aber siehe oben: wenn du X "richtig" mit startx startest, dann reicht das Beenden des als Windowmanager angegebenen Programmes um auch X sauber zu beenden. Wie du das Programm beendest ist dabei eher nebensaechlich, ob ueber ein "Ausloggen"/"Beenden" des Windowmanagers oder ueber ein 'kill -TERM PID_DES_PROGRAMMS'. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Am Sa, 2004-05-08 um 15.11 schrieb David Haller:
Hallo,
Am Sat, 08 May 2004, Marcus Habermehl schrieb:
Am Di, 2004-05-04 um 01.34 schrieb David Haller: [..] Nein. Ich habe auf meinem Rechner einen User test angelegt. Unter dem Teste ich immer neue Programme oder WMs, damit ich mir ~/ nicht mit Müll vollstopfe oder etwas verstelle.
Daher starte ich eine grafische Sitzung für test mit folgendem.
X :1 & export DISPLAY=':1.0' metacity & # Wenn ich einen WM brauche (bei Programmen) programm & # Oder halt den kompletten WM; dann fällt metacity weg
Somit lässt sich X nicht ohne weiteres beenden. Selbst mit fg komme ich nicht mehr drann. X wurde einfach root zugeordnet.
Nicht gut. Verwende:
export DISPLAY=":1" export WINDOWMANAGER="/usr/X11R6/bin/metacity" startx $WINDOWMANAGER -- :1
bzw.:
export DISPLAY=":1" export WINDOWMANAGER="/pfad/zu/programm" startx $WINDOWMANAGER -- :1
Dann klappt das auch mit dem Beenden.
X ist es egal, ob das Programm wirklich ein Windowmanager ist.
Also könnte ich zum Beispiel auf die Weise ein Shellskript laufen lassen, dass ein paar Dateien kopiert/löscht oder sonst was macht und X würde sich beenden, wenn das Skript beendet ist? Ich weiß. Die Funktion des Skripts ist ein blödes Beispiel. Aber das sollte es auch sein. ;-)
[..]
Auf ein SIGTERM sollte ein WM genau so reagieren wie auf einen Klick auf "Ausloggen" / "Exit" o.ae. Ein
kill -TERM `pidof wmaker`
Wie schicke ich diese Signale? Also SIGTERM UND SIGINT. Auch mit kill?
Steht da doch:
kill -TERM PID_VON_PROGRAMM kill -INT PID_VON_PROGRAMM
Siehe 'kill -l' und man 7 signal
Ich frage so blöd, weil ich bei man kill die Manpage von der bash vorgesetzt bekommen habe. Aber jetzt weiß ich, welche Manpages ich lesen muss.
Denke mal, dass da killproc eher die Lösung wäre. Oder?
Nur wenn du das Programm per 'startproc' startest.
[..]
Ist startproc hier nur ein Synonym? Denn als Befehl gibts das bei mir nicht. Auch YaST2 schweigt sich dabei aus.
Der ist auch in /sbin. Schau mal in 'man startproc'.
Stimmt. Da kann ich lange mit which startproc als User suchen. Aber wieso habe ich nicht mal locate eingesetzt? Keine Ahnung wo ich wieder mit meinen Gedanken war.
Aber siehe oben: wenn du X "richtig" mit startx startest, dann reicht das Beenden des als Windowmanager angegebenen Programmes um auch X sauber zu beenden. Wie du das Programm beendest ist dabei eher nebensaechlich, ob ueber ein "Ausloggen"/"Beenden" des Windowmanagers oder ueber ein 'kill -TERM PID_DES_PROGRAMMS'.
Super. Dann werde ich mir nochmal die Manpages zu gemüte führen und dann sollte ich eigentlich weiter kommen. Danke. Marcus
participants (2)
-
David Haller
-
Marcus Habermehl