Apa cara yang benar untuk membunuh vncsession di linux?

25

Ketika saya menjalankan perintah berikut di linuxkotak jauh saya yang saya hubungkan dari windows 7laptop saya melalui VNCsaya mendapatkan yang berikut:

 [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

Bagaimana saya bisa membunuh sesi ini dengan elegan? Saya tahu kill -9 <pid>akan melakukannya tetapi saya pikir itu adalah pembersihan yang kuat dan dapat menyebabkan file rusak.

PS: Saya juga membaca dari sumber ini untuk menggunakan opsi kill dari vncserver tetapi tidak yakin bagaimana mencari tahu tampilan #.

Kutu buku
sumber

Jawaban:

30

Seperti yang Anda perhatikan, dari 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.

Nomor tampilan terhubung ke nomor port tampilan jika seseorang tidak mengaturnya secara manual (dan berbeda), di mana

Display number = (Port number) ‒ 5900

mis. port 5901 → tampilan: 1. Informasi ini dapat ditemukan di man Xvnc( vncserverhanya skrip pembungkus yang memanggil alat ini) di mana dikatakan:

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

Jika Anda tidak tahu nomornya dengan hati (tetapi Anda harus mengetahuinya jika Anda akan terhubung ke server), Anda dapat memeriksa mis ps ax | grep vncuntuk informasi. Jika saya melakukannya secara lokal, saya melihat prosesnya

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

dan dengan demikian saya tahu bahwa mereka mewakili server VNC dengan nomor tampilan :1dan :2masing - masing, dan dapat dibunuh oleh

vncserver -kill :1
vncserver -kill :2

Dalam kasus Anda, Anda melihat bahwa nomor tampilan :1untuk server yang tercantum dalam psoutput Anda .

Daniel Andersson
sumber
1

Saya mencoba jawaban di atas dan itu tidak berhasil untuk saya. Itu memberi saya pesan kesalahan seperti dalam pertanyaan ini: Membunuh Proses VNC Secara Manual

Jadi saya harus membunuh mereka secara manual. Saya mencoba membunuh -9, dan kemudian saya tidak bisa masuk dengan rdp lagi. Saya dapatkan xrdp_mm_process_login_response: login failedketika saya mencoba masuk.

Jawabannya ditemukan di sini: http://linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html

Pada dasarnya, ada file sesi tidak dibersihkan ketika server Xvnc terbunuh. File diberi nama untuk tampilan, jadi jika Anda pada layar: 12, itu /tmp/.X11-unix/X12. Hapus file itu setelah kill -9dan Anda kembali ke bisnis.

Mnebuerquo
sumber
Skrip yang saya tulis untuk mematikan sesi idle otomatis: gist.github.com/mnebuerquo/e825530cf2bfd363b6c3cd82fe697d94
Mnebuerquo