我正在尝试编写一个“系统睡眠”脚本systemd-suspend.service
,以在挂起之前关闭用户服务(因为它会阻止挂起内核)并在系统恢复后重新启动它。
问题是系统睡眠脚本以系统权限运行,我不确定如何解决用户服务 -systemctl --user
显然不起作用。
我尝试过运行su -c "systemctl --user stop <service>" <user>
,USER=<user> systemctl --user stop <service>
但都出现此错误:
Failed to connect to bus: No such file or directory
的手册页systemctl
没有提供有关此问题的太多指导。
答案1
在搞乱了一番之后,我发现了如何使用sudo
(或者su
- 我正在使用它sudo
,因为它可以采用数字 UID,这可以省去解析用户名的麻烦):
XDG_RUNTIME_DIR=/run/user/<uid> sudo -E -u '#<uid>` systemctl --user status <service>.service
我假设 UID 是已知的和/或可以很容易地从systemctl status user.slice
.