use*_*408 6 linux d-bus systemd session
我是新来的dbus,并且看到了根据桌面环境从终端注销的不同方式。但我很好奇有没有办法使用dbus消息从任何桌面环境中注销?
在 GNOME 上:
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1
Run Code Online (Sandbox Code Playgroud)
在 KDE 上:
dbus-send --print-reply --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:0 int32:0 int32:0
Run Code Online (Sandbox Code Playgroud)
是否有任何命令适用于每个桌面环境(例如使用 system dbus)?
在systemd设置时,您应该能够通过接口强制终止会话:logind dbus
dbus-send --system --print-reply --dest=org.freedesktop.login1 \
/org/freedesktop/login1 'org.freedesktop.login1.Manager.TerminateSession' \
string:c2
Run Code Online (Sandbox Code Playgroud)
c2会话 ID 字符串在哪里;获取您可以运行的会话 ID
登录
SESSION UID USER SEAT
c1 120 gdm seat0
c2 1000 don seat0
2 sessions listed
Run Code Online (Sandbox Code Playgroud)
或者,如果您更喜欢通过dbus界面进行操作:
dbus-send --system --print-reply --dest=org.freedesktop.login1 \
/org/freedesktop/login1 'org.freedesktop.login1.Manager.ListSessions'
Run Code Online (Sandbox Code Playgroud)
返回类似的东西
array [
struct {
string "c1"
uint32 120
string "gdm"
string "seat0"
object path "/org/freedesktop/login1/session/c1"
}
struct {
string "c2"
uint32 1000
string "don"
string "seat0"
object path "/org/freedesktop/login1/session/c2"
}
]
Run Code Online (Sandbox Code Playgroud)