如何使用相同的实例说明符启用多个 systemd 单元文件?

如何使用相同的实例说明符启用多个 systemd 单元文件?

每当我启用某个实例化 systemd 服务时,我希望同时启用两个具有相同实例说明符的计时器。这是我的单位文件[电子邮件受保护]好像:

[Unit]
Description=Does something cool
Documentation=man:foo(1)

[Service]
Type=forking
ExecStart=/usr/bin/foo %i
PIDFile=%t/foo/foo.pid
StandardOutput=journal

[Install]
WantedBy=network-online.target
Also=bar1@%i.timer
Also=bar2@%i.timer

运行返回:systemctl enable [email protected]

Failed to enable unit: Invalid argument

如果我从 [Install] 部分中删除实例说明符并将其替换为特定的实例名称(如下所示),那么它就可以正常工作。

...
[email protected]
[email protected]

手册页系统单元(5)%我说明符在安装部分进行解释,那么给出了什么?

The following specifiers are interpreted in the Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b, %v.

答案1

这似乎是 systemd 的一个错误,会在部分Also中的指令中重现[Install]

不过,您可以使用一种解决方法来提供相同的功能。

假设您有[email protected]文件并且需要相应的单位文件。相反,请在指令中添加该子句WantedBy.timer首先使用等启用单元。systemctl enable [email protected]

[Install]
WantedBy=network-online.target bar1@%i.timer bar2@%i.timer

上面的代码可以很好地使用服务模板和多个套接字文件通过套接字激活来启动多个 mpd 服务。

相关内容