所以,我已经阅读了移植指南(https://wiki.tizen.org/wiki/Porting_Guide)。有一个名为“Tizen Bootup Overview”的部分。本节说明运行systemd守护程序的用户实例。当我运行模拟器时,我可以通过ps aux | grep systemd
看到它,我发现它是由用户app
运行的。但是当我输入systemctl --user list-units
作为app
用户时,我收到了以下消息Failed to issue method call: Failed to execute program /bin/false: Success
。但是当我输入/usr/lib/systemd/systemd --user &
作为app
用户并且只调用list-units方法时,它运行正常。关于运行systemctl --user list-units
我还不明白,
据我所知,DBus服务文件已经将/ bin / false作为指定的可执行文件,以避免systemd --user
意外地被DBus激活。
但是查看systemctl
的来源,我发现当使用--user
选项运行时,它会尝试连接到DBus "unix:path=$XDG_RUNTIME_PATH/systemd/private"
我对systemd和dbus都很陌生。我尝试在连接到systemd之前从我的程序中调用/usr/lib/systemd/systemd --user &
并且它工作正常,但是systemd开始执行用户目标。
我使用dbus_bus_get(DBUS_BUS_SESSION, &err)
连接到DBus(DBUS_BUS_SESSION
是连接到用户实例,我通过查看systemd & Co
的来源了解
PS:Tizen使用systemd v43
提前致谢。
抱歉我的英语不好。
答案 0 :(得分:0)
答案是: 要连接到systemd的用户会话:
$ su -
# su - app
app$ export XDG_RUNTIME_DIR=/run/user/app
app$ systemctl --user status default.target