วิธีจบเซสชัน KDE จากเชลล์โดยไม่ต้องใช้สิทธิ์รูท


17

ฉันกำลังเข้าถึงเครื่อง (OpenSuse 11 พร้อม KDE) ผ่าน NX

ฉันไม่สามารถใช้ทางลัด Alt-Ctrl-Del เนื่องจากระบบของฉันถูกจับ ปุ่มออกจากระบบปกติจะสิ้นสุดเซสชัน NX โดยไม่สิ้นสุดเซสชัน KDE ฉันโทรkdm restartไม่ได้เพราะไม่มีสิทธิ์รูต

การคาดเดาอื่น ๆ เช่นlogoutและexitไม่ทำงานอย่างใดอย่างหนึ่งคนแรกบ่นเกี่ยวกับไม่ได้อยู่ในเปลือกเข้าสู่ระบบและคนที่สองเพียงแค่ปิดคอนโซล

shell-fu ของฉันอ่อนแอดังนั้นความช่วยเหลือใด ๆ ที่ได้รับการชื่นชม



@ MartinSchröder - โอ้จับได้ดี - เป็นคำถามเดียวกัน แต่คำตอบของพอลสำหรับคำถามนี้นั้นละเอียดยิ่งกว่าที่คำตอบของกิลส์จะมีต่ออีกฝ่าย
kostja

คำตอบ:


30

คุณสามารถส่งคำสั่งออกจากระบบผ่าน dbus ไปยัง KDE ซึ่งควร (ถ้าทำได้) ยุติเซสชัน

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

dbus เป็นระบบส่งข้อความที่ให้แอปพลิเคชั่นสื่อสารกันและqdbusคำสั่งนั้นเป็นยูทิลิตี้สำหรับส่งข้อความ dbus ไปยังแอปพลิเคชัน

แอปพลิเคชันลงทะเบียนด้วย dbus และksmserverส่วนหนึ่งของ KDE เป็นตัวจัดการเซสชัน - จะดูแลหลังจากที่เข้าสู่ระบบแล้ว

ดังนั้นเรากำลังส่งข้อความไปksmserverยัง/KSMServerอินเทอร์เฟซและบอกให้ออกจากระบบ ข้อความที่เราส่งเป็นข้อความเดียวกับที่ส่งไปยัง KSM เมื่อคุณคลิกที่ไอคอนล็อกเอาต์บนเดสก์ท็อปของคุณ

ศูนย์สามตัวเป็นพารามิเตอร์และสามารถเปลี่ยนประเภทของการออกจากระบบที่เรากำลังทำอยู่:

พารามิเตอร์แรก:

  • 0 = อย่ารอการยืนยัน
  • 1 = รอการยืนยัน (ด้วยการหมดเวลา 30 วินาที)

พารามิเตอร์ที่สอง:

  • -1 = พรอมต์สำหรับการดำเนินการเริ่มต้นการปิด (เหมาะสมเมื่อรอการยืนยันเท่านั้น)
  • 0 = ออกจากระบบ
  • 1 = เริ่มต้นใหม่
  • 2 = ปิดเครื่อง

พารามิเตอร์ที่สามคือพารามิเตอร์ "when" แต่ไม่ชัดเจนว่าผลกระทบคืออะไร


ตรวจสอบให้แน่ใจว่าตั้งค่าDISPLAYตัวแปรสภาพแวดล้อม (เป็นไปได้มากที่สุด:0) ก่อนที่คุณจะรันคำสั่งนี้มิฉะนั้นจะบ่น
palswim

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