Linux'ta bir vncsession'ı öldürmenin doğru yolu nedir?


25

Dizüstü bilgisayarım üzerinden linuxbağlandığım uzak kutumda aşağıdaki komutu çalıştırdığımda aşağıdakileri alıyorum: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

Bu oturumu zarif bir şekilde nasıl öldürebilirim? Bunu biliyorum kill -9 <pid>ama güçlü bir temiz olduğunu düşünüyorum ve bozuk dosyalara yol açabilir.

PS: Ben de vncserver kill seçeneğini kullanmak için bu kaynaktan okudum ama ekran # nasıl anlamaya emin değilim.

Yanıtlar:


30

Fark ettiğiniz gibi 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.

Ekran numarası, manuel olarak (ve farklı bir şekilde) ayarlamadıysa, ekranın bağlantı noktası numarasına bağlanır;

Display number = (Port number) ‒ 5900

örneğin port 5901 → ekran: 1. Bu bilgi şu adreste bulunabilir man Xvnc( vncserversadece bu aracı çağıran bir sarmalayıcı betiğidir):

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

Numarayı ezbere bilmiyorsanız (ancak yine de sunucuya bağlanacaksanız bilmeniz gerekir), örneğin ps ax | grep vncbilgi için kontrol edebilirsiniz . Bunu yerel olarak yaparsam süreçleri görüyorum

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

ve böylece VNC sunucularını ekran numaraları ile temsil ettiklerini :1ve :2sırasıyla

vncserver -kill :1
vncserver -kill :2

Sizin durumunuzda, ekran numarasının çıktınızda :1listelenen sunucu için olduğunu görürsünüz ps.


1

Yukarıdaki cevabı denedim ve bu benim için işe yaramadı. Bana şu sorudaki gibi bir hata mesajı verdi: VNC İşlemini Manuel Olarak Öldürmek

Bu yüzden onları elle öldürmek zorunda kaldım. -9'u öldürmeyi denedim ve artık rdp ile giriş yapamadım. xrdp_mm_process_login_response: login failedGiriş yapmaya çalıştığımda anladım .

Yanıt burada bulundu: http://linuxtoolkit.blogspot.com/2013/03/xrdpmmprocessloginresponse-login-failed.html

Temel olarak, Xvnc sunucusu öldürüldüğünde temizlenmeyen bir oturum dosyası vardır. Dosya görüntü için adlandırılmıştır, bu yüzden görüntüdeyseniz: 12, dosyadır /tmp/.X11-unix/X12. Sonra bu dosyayı silin kill -9ve işinize geri döndün.


Boş oturumları otomatik olarak öldürmek için senaryo yazdım: gist.github.com/mnebuerquo/e825530cf2bfd363b6c3cd82fe697d94
Mnebuerquo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.