如何在没有 root 权限的情况下从 shell 正确结束 KDE 会话

如何在没有 root 权限的情况下从 shell 正确结束 KDE 会话

我正在通过 NX 访问机器(带有 KDE 的 OpenSuse 11)。

我无法使用 Alt-Ctrl-Del 快捷键,因为它已被我的系统捕获。常规注销按钮只会结束 NX 会话而不会结束 KDE 会话。我无法调用,kdm restart因为我没有 root 权限。

其他猜测像logoutexit也不起作用,第一个抱怨不在登录 shell 中,而第二个只是关闭控制台。

我的 shell-fu 很弱,所以任何帮助都会很感激。

答案1

您可以通过 dbus 向 KDE 发送注销命令,它应该(如果可以)终止会话。

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

dbus 是一个让应用程序相互通信的消息系统,该qdbus命令是一个用于向应用程序发送 dbus 消息的实用程序。

应用程序在 dbus 上注册,ksmserverKDE 的一部分是会话管理器 - 它负责管理谁登录了。

ksmserver因此,我们向界面发送一条消息/KSMServer,告诉它注销。我们发送的消息与您单击桌面上的注销图标时发送给 KSM 的消息完全相同。

这三个零是参数,可以改变我们正在执行的注销类型:

第一个参数:

  • 0 = 不等待确认
  • 1 = 等待确认(超时 30 秒)

第二个参数:

  • -1 = 提示操作,默认关闭(仅在等待确认时才有意义。)
  • 0 = 注销
  • 1 = 重新启动
  • 2 = 关机

第三个参数是“when”参数,但是它的影响并不清楚。

答案2

可接受的答案是针对 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

相关内容