วิธีที่ถูกต้องในการฆ่า 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: ฉันยังอ่านจากแหล่งนี้เพื่อใช้ตัวเลือกการฆ่าจาก vncserver แต่ไม่แน่ใจว่าจะหา display # ได้อย่างไร

คำตอบ:


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.