是否可以扩展 WantedBy systemd 单元属性?

是否可以扩展 WantedBy systemd 单元属性?

我有一个单元文件,我想修改其中的一些属性。我可以使用目录扩展所有属性/etc/systemd/system/unitname.service.d/,但无法WantedBy扩展属性。

原始单元文件(deluged.service)

[Unit]
Description=Deluge Bittorrent Client Daemon
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
User=media
Group=media
ExecStart=/usr/local/bin/deluged -d -u 0.0.0.0

[Install]
WantedBy=multi-user.target

/etc/systemd/system/deluged.service.d/override.conf

[Unit]
BindTo=sys-subsystem-net-devices-tun0.device
After=sys-subsystem-net-devices-tun0.device

[Service]
ExecStart=
ExecStart=/usr/local/bin/deluged -d -i 10.10.10.1 -u 0.0.0.0

[Install]
WantedBy=
WantedBy=sys-subsystem-net-devices-tun0.device

一切似乎都工作正常,除了WantedBy当我运行时systemctl enable deluged它仍然创建符号链接multi-user并且没有在新位置创建链接。

我搜索了有关扩展/覆盖的文档,但没有看到任何内容,WantedBy所以我不知道是否有可能对其进行扩展。是我做错了什么,还是根本就不可能?

答案1

较旧的 systemd 版本不支持[Install]使用插入文件覆盖该部分。使用这些文件,您需要创建一个替换文件而不是这项服务。

同样,本节Conflicts=中的键[Unit]无法被覆盖在一个插入文件中。


Systemd 消除了这一限制2017年底,因此此后发布的版本不受影响。

答案2

我目前正在使用 Systemd 237,它似乎考虑了 [install] 部分覆盖。

至少根据我的插入文件创建了链接。

/usr/lib/systemd/user/syncthing.service

[Unit]
Description=Syncthing - Open Source Continuous File Synchronization
Documentation=man:syncthing(1)

[Service]
ExecStart=/usr/bin/syncthing -no-browser -no-restart -logflags=0
Restart=on-failure
SuccessExitStatus=3 4
RestartForceExitStatus=3 4

# Hardening
SystemCallArchitectures=native
MemoryDenyWriteExecute=true
NoNewPrivileges=true

[Install]
WantedBy=default.target

/home/abe/.config/systemd/user/syncthing.service.d/override.conf

[Install]
WantedBy=
WantedBy=multi-user.target

systemctl --user 启用 syncthing.service

Created symlink /home/abe/.config/systemd/user/multi-user.target.wants/syncthing.service → /usr/lib/systemd/user/syncthing.service.

相关内容