![系统脚本可以控制systemd用户服务吗?](https://linux22.com/image/138845/%E7%B3%BB%E7%BB%9F%E8%84%9A%E6%9C%AC%E5%8F%AF%E4%BB%A5%E6%8E%A7%E5%88%B6systemd%E7%94%A8%E6%88%B7%E6%9C%8D%E5%8A%A1%E5%90%97%EF%BC%9F.png)
我正在尝试编写一个“系统睡眠”脚本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
.