系统脚本可以控制systemd用户服务吗?

系统脚本可以控制systemd用户服务吗?

我正在尝试编写一个“系统睡眠”脚本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.

相关内容