Який правильний спосіб знищити vncsession в Linux?


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: Я також читав з цього джерела, щоб використовувати параметр kill від vncserver, але не знаю, як розібратися у #.

Відповіді:


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.