我正在通过 NX 访问机器(带有 KDE 的 OpenSuse 11)。
我无法使用 Alt-Ctrl-Del 快捷键,因为它已被我的系统捕获。常规注销按钮只会结束 NX 会话而不会结束 KDE 会话。我无法调用,kdm restart
因为我没有 root 权限。
其他猜测像logout
和exit
也不起作用,第一个抱怨不在登录 shell 中,而第二个只是关闭控制台。
我的 shell-fu 很弱,所以任何帮助都会很感激。
答案1
您可以通过 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”参数,但是它的影响并不清楚。
答案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