在Linux中杀死vncsession的正确方法是什么?


25

当我在通过linux我的windows 7笔记本电脑连接的远程框中运行以下命令时,VNC得到以下信息:

 [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

我该如何优雅地结束本节会议?我知道kill -9 <pid>会这样做,但我认为这是强制清除,可能会导致文件损坏。

PS:我也从此源中读取了vncserver的kill选项,但不确定如何确定display#。

Answers:


30

如您所见,来自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.

如果没有手动(和其他方式)设置,则显示号将连接到显示器的端口号。

Display number = (Port number) ‒ 5900

例如端口5901→显示:1。可以在man Xvnc(其中vncserver是调用此工具的包装脚本)中找到此信息,其中指出:

   -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.

如果您根本不知道该号码(但是无论如何您都想知道该号码,则需要知道),则可以检查例如ps ax | grep vnc信息。如果我在本地这样做,我会看到流程

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

因而我知道,他们所代表的VNC服务器与显示数字:1:2分别,并且可以通过杀死

vncserver -kill :1
vncserver -kill :2

在您的情况下,您会看到显示号:1适用于ps输出中列出的服务器。


1

我尝试了上面的答案,但它对我没有用。它给我一个错误消息,如以下问题: 手动终止VNC进程

所以我不得不手动杀死他们。我尝试杀死-9,然后无法再使用rdp登录。我xrdp_mm_process_login_response: login failed尝试登录时得到了。

在这里找到了答案:http : //linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html

基本上,杀死Xvnc服务器时不会清理会话文件。该文件是为显示命名的,所以如果您在显示:12,则为/tmp/.X11-unix/X12。之后删除该文件,即可kill -9恢复正常工作。


我写的自动杀死空闲会话的脚本:gist.github.com/mnebuerquo/e825530cf2bfd363b6c3cd82fe697d94
Mnebuerquo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.