在 Linux 中终止 vncsession 的正确方法是什么?

在 Linux 中终止 vncsession 的正确方法是什么?

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

 [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 选项,但不确定如何找出显示编号。

答案1

正如您所注意到的,来自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

man Xvnc例如端口 5901 → 显示:1。此信息可以在(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 [...]

因此我知道它们分别代表具有显示编号:1和的VNC 服务器:2,并且可以被杀死

vncserver -kill :1
vncserver -kill :2

在您的情况下,您会看到显示号码是:1针对输出中列出的服务器的ps

答案2

我尝试了上面的答案,但对我不起作用。它给了我一条错误消息,如下问题所示: 手动终止 VNC 进程

所以我不得不手动杀死它们。我尝试了 kill -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,您就可以恢复工作了。

相关内容