小编Han*_*ans的帖子

如何设置由非 root 用户作为用户守护程序启动的 systemd 服务?

我刚刚在我的 arch-linux 系统(2012.09.07)上完成了 systemd 的安装和设置过程。我卸载了initscripts(并删除了配置文件)。

我想要做的是创建一个可以由非 root 用户启动和停止的服务。该服务将启动一个运行 rtorrent 的分离屏幕会话。但是,我希望系统上已将此服务设置为启动(启用)的每个用户都专门为他们启动一个特定的实例。怎么做呢?

我记得读过 systemd 支持服务的用户实例,但是我一直无法找到有关如何设置它的任何信息,或者它是否与我要查找的内容有关。

我用于系统的服务文件:

[Unit]
Description=rTorrent

[Service]
Type=forking
ExecStart=/usr/bin/screen -d -m -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
Run Code Online (Sandbox Code Playgroud)

更新#1

阅读此处此处的手册页后,我了解 systemd 如何更好地工作。具体来说,使用User=WorkingDirectory=选项允许在用户会话中启动服务。然而问题仍然存在,用户自己不能startstopenable, 或disable服务。一个访问被拒绝错误由下式给出systemctl

更新#2

首先,为了简化和更好地使用 systemd 的用户会话(仍然有些不完整)功能,我使用了sofar 的 user-session-units并遵循了他的配置建议。

似乎在当前版本的 DBus (1.6.4-1) 中存在一个错误,其中它没有DBUS_SESSION_BUS_ADDRESS使用systemctl --user命令错误设置环境变量含义:

Failed to get D-Bus connection: …
Run Code Online (Sandbox Code Playgroud)

user arch-linux rtorrent systemd

22
推荐指数
1
解决办法
5万
查看次数

标签 统计

arch-linux ×1

rtorrent ×1

systemd ×1

user ×1