रूट विशेषाधिकार के बिना शेल से KDE सत्र को ठीक से कैसे समाप्त करें


17

मैं NX पर मशीन (KDE के साथ OpenSuse 11) को एक्सेस कर रहा हूं।

मैं Alt-Ctrl-Del शॉर्टकट का उपयोग नहीं कर सकता क्योंकि यह मेरे सिस्टम द्वारा कैप्चर किया गया है। नियमित लॉगऑफ़ बटन KDE सत्र को समाप्त किए बिना केवल NX सत्र को समाप्त करता है। मैं कॉल नहीं कर सकता kdm restartक्योंकि मेरे पास कोई रूट विशेषाधिकार नहीं हैं।

अन्य जंगली अनुमान लगाते हैं logoutऔर exitकाम नहीं करते हैं, पहला एक लॉगिन शेल में नहीं होने की शिकायत करता है और दूसरा केवल कंसोल को बंद करने के बारे में।

मेरा खोल-फू कमजोर है, इसलिए किसी भी मदद की सराहना की जाती है।



@ MartinSchröder - आह, अच्छी पकड़ - यह अनिवार्य रूप से एक ही सवाल है। लेकिन इस सवाल पर पॉल का जवाब अधिक विस्तृत है कि गिल्स का जवाब दूसरे के लिए है।
कोस्तजा

जवाबों:


30

आप डब के माध्यम से केडीई के लिए एक लॉगआउट कमांड भेज सकते हैं, जिसे (यदि यह हो सकता है) सत्र समाप्त करना चाहिए।

qdbus org.kde.ksmserver /KSMServer logout 0 0 0

dbus एक मैसेजिंग सिस्टम है जो एप्लिकेशन को एक दूसरे के साथ संवाद करने देता है, और qdbusकमांड एप्लिकेशन को dbus संदेश भेजने के लिए एक उपयोगिता है।

अनुप्रयोग डब के साथ रजिस्टर होते हैं, और ksmserverकेडीई का हिस्सा सत्र प्रबंधक होता है - यह लॉग इन करने के बाद दिखता है।

इसलिए हम इंटरफ़ेस ksmserverको एक संदेश भेज रहे हैं /KSMServerऔर इसे लॉगआउट करने के लिए कह रहे हैं। हम जो संदेश भेज रहे हैं, वह ठीक वही संदेश है जो आपके डेस्कटॉप पर लॉगआउट आइकन पर क्लिक करने पर KSM को भेजा जाता है।

तीन शून्य पैरामीटर हैं और हम कर रहे लॉगआउट के प्रकार को बदल सकते हैं:

पहला पैरामीटर:

  • 0 = पुष्टि की प्रतीक्षा न करें
  • 1 = पुष्टि के लिए प्रतीक्षा करें (30 सेकंड टाइमआउट के साथ)

दूसरा पैरामीटर:

  • -1 = कार्रवाई के लिए शीघ्र, शटडाउन करने के लिए डिफ़ॉल्ट (केवल पुष्टि के लिए इंतजार करने पर समझ में आता है।)
  • 0 = लॉगआउट करें
  • 1 = पुनः आरंभ करें
  • 2 = शटडाउन

तीसरा पैरामीटर "जब" पैरामीटर है, लेकिन यह स्पष्ट नहीं है कि इसका प्रभाव क्या है।


इस आदेश को चलाने से पहले DISPLAYपर्यावरण चर (सबसे अधिक संभावना :0) सेट करना सुनिश्चित करें , अन्यथा यह शिकायत करेगा।
पाल्व्सिम

3

स्वीकृत उत्तर KDE5 के लिए विशिष्ट समाधान है, एक अधिक सामान्य दृष्टिकोण होगा

loginctl list-sessions
loginctl terminate-session <id>

या

loginctl terminate-user <username>

स्रोत

अधिक संभावित आदेश हैं:

Session Commands:
  list-sessions            List sessions
  session-status [ID...]   Show session status
  show-session [ID...]     Show properties of sessions or the manager
  activate [ID]            Activate a session
  lock-session [ID...]     Screen lock one or more sessions
  unlock-session [ID...]   Screen unlock one or more sessions
  lock-sessions            Screen lock all current sessions
  unlock-sessions          Screen unlock all current sessions
  terminate-session ID...  Terminate one or more sessions
  kill-session ID...       Send signal to processes of a session

User Commands:
  list-users               List users
  user-status [USER...]    Show user status
  show-user [USER...]      Show properties of users or the manager
  enable-linger [USER...]  Enable linger state of one or more users
  disable-linger [USER...] Disable linger state of one or more users
  terminate-user USER...   Terminate all sessions of one or more users
  kill-user USER...        Send signal to processes of a user

Seat Commands:
  list-seats               List seats
  seat-status [NAME...]    Show seat status
  show-seat [NAME...]      Show properties of seats or the manager
  attach NAME DEVICE...    Attach one or more devices to a seat
  flush-devices            Flush all device associations
  terminate-seat NAME...   Terminate all sessions on one or more seats
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.