5

我想在启动时通过systemd(操作系统是 Fedora Core 16)从一些非 root 用户(例如michael)执行我的脚本。

我不需要 root 权限 - 我只想在启动时和关闭时运行我的一些单元在systemd. 而且我不想为此打开root用户。我只想使用systemd单元语法的力量来启动和监视我的进程(当然没有 root 访问权限)。可能吗?

我在文档中没有找到任何帮助。我只发现systemd(1) -> DIRECTORIES -> "User unit directories"

$ pkg-config systemd --variable=systemduserunitdir
/usr/lib/systemd/user

但是/usr/lib/systemd/user是:

drwxr-xr-x。2根根

我无法想象如何以非 root 用户身份使用此目录...

4

2 回答 2

3

这个 Arch Linux 文档可能会有所帮助。

systemd 为用户提供了运行 systemd 实例来管理他们的会话和服务的能力。这允许用户在用户运行 systemd 时启动、停止、启用和禁用在某些目录中找到的单元。这对于通常以 root 用户或特殊用户(例如 mpd)以外的用户身份运行的守护程序和其他服务来说很方便。

他们建议通过 xinit 启动系统 --user 实例,但我想无论用户是否登录,您都想启动用户服务。

我通常会通过在我的 crontab 中添加 @reboot 行来做到这一点。

来自维基百科

如果需要在特定用户下启动服务器或守护程序,并且该用户无权配置 init 来启动程序,@reboot 会很有用。

也许你可以通过@reboot 启动 systemd --user !!!

于 2013-01-24T20:48:59.893 回答
2

为“michael”创建一个用户 systemd 单元文件。

这是确保用户 systemd 进程将在启动时而不是在登录时启动的魔法:

loginctl enable-linger michael

完整的细节

于 2018-10-17T00:27:27.533 回答