Was ist der richtige Weg, um eine vncsession unter Linux zu beenden?

25

Wenn ich in meiner Remote- linuxBox den folgenden Befehl ausführe, mit dem ich von meinem windows 7Laptop aus eine Verbindung herstelle, VNCerhalte ich Folgendes:

 [subhrcho@slc04lyo ~]$ ps -ef|grep vnc
subhrcho 20113 19804  0 21:40 pts/8    00:00:00 grep vnc
subhrcho 27486     1  0 Jan28 ?        00:05:35 Xvnc :1 -desktop slc04lyo:1 (subhrcho) -httpd /usr/share/vnc/classes -auth /home/subhrcho/.Xauthority -geometry 1680x1050 -depth 16 -rfbwait 30000 -rfbauth /home/subhrcho/.vnc/passwd -rfbport 5901 -pn
subhrcho 27493     1  0 Jan28 ?        00:00:00 vncconfig -iconic

Wie kann ich diese Sitzung elegant beenden? Ich weiß, kill -9 <pid>würde es tun, aber ich denke, das ist eine gewaltige Säuberung und könnte zu beschädigten Dateien führen.

PS: Ich habe auch aus dieser Quelle gelesen , um die Kill-Option von vncserver zu verwenden, bin mir aber nicht sicher, wie ich die Anzeige # herausfinden soll.

Aussenseiter
quelle

Antworten:

30

Wie Sie bemerkt haben, aus dem man vncserver:

  -kill :display#
          This kills a VNC desktop previously started with vncserver. It does
          this by killing the Xvnc process, whose process ID is stored in the
          file "$HOME/.vnc/host:display#.pid". It actually ignores anything
          preceding a ":" in its argument. This can be useful so you can write
          "vncserver -kill $DISPLAY", for example at the end of your xstartup
          file after a particular application exits.

Die Display-Nummer wird mit der Port-Nummer des Displays verbunden, wenn man dies nicht manuell (und anders) eingestellt hat

Display number = (Port number) ‒ 5900

zB Port 5901 → Anzeige: 1. Diese Informationen befinden sich in man Xvnc(es vncserverhandelt sich lediglich um ein Wrapper-Skript, das dieses Tool aufruft). Dort heißt es:

   -rfbport port
          Specifies the TCP port on which Xvnc listens for connections from
          viewers (the protocol used in VNC is called RFB - "remote
          framebuffer").  The default is 5900 plus the display number.

Wenn Sie die Nummer nicht auswendig kennen (aber Sie müssen sie wissen, wenn Sie sich trotzdem mit dem Server verbinden möchten), können Sie z ps ax | grep vnc. B. nach Informationen suchen. Wenn ich das lokal mache, sehe ich die Prozesse

25697 ?        S     55:38 Xvnc4 :1 [...]
[...]
30481 ?        S     17:57 Xvnc4 :2 [...]

und so weiß ich , dass sie VNC - Server mit Display Zahlen darstellen :1und :2jeweils und können durch getötet werden

vncserver -kill :1
vncserver -kill :2

In Ihrem Fall sehen Sie, dass die angezeigte Nummer :1für den in Ihrer psAusgabe aufgeführten Server gilt .

Daniel Andersson
quelle
1

Ich habe die Antwort oben ausprobiert und es hat bei mir nicht funktioniert. Es gab mir eine Fehlermeldung wie in dieser Frage: Manuelles Beenden des VNC-Prozesses

Also musste ich sie manuell töten. Ich habe versucht, töten -9, und dann konnte ich mich nicht mehr mit RDP anmelden. Ich bekam, xrdp_mm_process_login_response: login failedals ich versuchte mich einzuloggen.

Die Antwort wurde hier gefunden: http://linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html

Grundsätzlich wird eine Sitzungsdatei nicht bereinigt, wenn der Xvnc-Server beendet wird. Die Datei trägt den Namen für die Anzeige. Wenn Sie also angezeigt werden: 12, ist es /tmp/.X11-unix/X12. Löschen Sie diese Datei nach kill -9und Sie sind wieder im Geschäft.

Mnebuerquo
quelle
Skript, das ich geschrieben habe, um inaktive
beenden