Cách kết thúc đúng phiên KDE từ shell mà không cần quyền root


17

Tôi đang truy cập vào máy (OpenSuse 11 với KDE) qua NX.

Tôi không thể sử dụng các phím tắt Alt-Ctrl-Del vì hệ thống của tôi đã bắt được. Nút đăng xuất thông thường chỉ kết thúc phiên NX mà không kết thúc phiên KDE. Tôi không thể gọi kdm restartvì tôi không có quyền root.

Những dự đoán hoang dã khác thích logoutexitkhông hoạt động, cái đầu tiên phàn nàn về việc không ở trong vỏ đăng nhập và cái thứ hai chỉ đóng giao diện điều khiển.

Shell-fu của tôi yếu, vì vậy bất kỳ trợ giúp đều được đánh giá cao.



@ MartinSchröder - à, bắt tốt - về cơ bản là cùng một câu hỏi. Nhưng câu trả lời của Paul cho câu hỏi này đầy đủ hơn là câu trả lời của Gilles cho câu hỏi kia.
kostja 7/2/2015

Câu trả lời:


30

Bạn có thể gửi lệnh đăng xuất qua dbus đến KDE, điều này sẽ (nếu có thể) chấm dứt phiên.

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

dbus là một hệ thống nhắn tin cho phép các ứng dụng giao tiếp với nhau và qdbuslệnh là một tiện ích để gửi tin nhắn dbus đến các ứng dụng.

Các ứng dụng đăng ký với dbus và ksmservermột phần của KDE là trình quản lý phiên - nó sẽ chăm sóc người đăng nhập.

Vì vậy, chúng tôi đang gửi một thông điệp tới ksmservervới /KSMServergiao diện và nói với nó để đăng xuất. Thông báo chúng tôi đang gửi là chính xác cùng một tin nhắn được gửi đến KSM khi bạn nhấp vào biểu tượng đăng xuất trên máy tính để bàn của bạn.

Ba số không là tham số và có thể thay đổi loại đăng xuất mà chúng tôi đang thực hiện:

Tham số đầu tiên:

  • 0 = Đừng đợi xác nhận
  • 1 = Đợi xác nhận (với thời gian chờ 30 giây)

Tham số thứ hai:

  • -1 = Nhắc nhở hành động, mặc định tắt máy (Chỉ có ý nghĩa khi chờ xác nhận.)
  • 0 = Thoát
  • 1 = Khởi động lại
  • 2 = Tắt máy

Tham số thứ ba là tham số "khi", nhưng không rõ tác động của nó là gì.


Đảm bảo đặt DISPLAYbiến môi trường (rất có thể :0) trước khi bạn chạy lệnh này, nếu không nó sẽ phàn nàn.
palswim

3

Câu trả lời được chấp nhận là một giải pháp dành riêng cho KDE5, một cách tiếp cận chung chung hơn sẽ là

loginctl list-sessions
loginctl terminate-session <id>

hoặc là

loginctl terminate-user <username>

Nguồn

Có nhiều lệnh có thể hơn:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.