Linux

是否可以擴展 WantedBy systemd 單元屬性?

  • April 28, 2021

我有一個單元文件,我想修改一些屬性。我已經能夠使用該/etc/systemd/system/unitname.service.d/目錄擴展所有屬性,但無法WantedBy擴展該屬性。

原始單元文件 (delugged.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所以我不知道是否可以擴展它。我做錯了什麼還是不可能?

較舊的 systemd 版本不支持使用插入文件覆蓋該[Install]部分。相反,您需要為此服務創建替換文件

同樣,該部分中的Conflicts=也不能在插入文件中被覆蓋。[Unit]


Systemd 在2017 年底取消了該限制,因此之後發布的版本不受影響。

我目前正在使用 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.

引用自:https://serverfault.com/questions/865931