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


17

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

我无法使用Alt-Ctrl-Del快捷方式,因为它是系统捕获的。常规注销按钮仅结束NX会话而没有结束KDE会话。我kdm restart没有root权限,因此无法打电话。

其他疯狂的猜测也是如此,logout并且exit都不起作用,第一个猜测抱怨不在登录外壳中,第二个抱怨只是关闭了控制台。

我的贝壳腐薄弱,因此可以提供任何帮助。



@MartinSchröder-啊,很好-基本上是相同的问题。但是,保罗对这个问题的回答比吉尔斯对另一个问题的回答更为详尽。
kostja

Answers:


30

您可以通过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 =关机

第三个参数是“何时”参数,但尚不清楚其影响是什么。


在运行此命令之前,请确保设置DISPLAY环境变量(最有可能设置为:0),否则会报错。
palswim 2014年

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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.