लिनक्स में एक vncsession को मारने का सही तरीका क्या है?


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>वह ऐसा करेगी लेकिन मुझे लगता है कि यह एक जबरदस्त सफाई है और इससे भ्रष्ट फाइलें हो सकती हैं।

पुनश्च: मैं 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 को मारने की कोशिश की, और फिर मैं अब आरडीपी के साथ लॉग इन नहीं कर सका। 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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.