如何将连字符参数(标志)传递给模板服务单元?

如何将连字符参数(标志)传递给模板服务单元?

[email protected]是我的模板服务单位。

[Unit]
Description=my service unit     

[Service]
Type=oneshot
ExecStart=/home/username/scripts/myprogram.py %I

我想%I成为--arg1 --arg2=/path/to/something

我试过...

systemctl start myservice@'--arg1 --arg2=/path/to/something'.service

但它认为--arg1这是一个糟糕的选择systemctl。和...

systemctl start $(systemd-escape --template [email protected] '--arg1 --arg2=/path/to/something'

认为--arg1是一个糟糕的选择systemd-escape

请帮忙

答案1

你可以ExecStart=/bin/sh -c %I让 shell 扩展空格=吗?我在尝试执行实例名称时偶然发现了这一点,这对我有用。2020年的这个问题说他们不会在模板中实现多个字段并建议一个用户正在使用脚本来解析参数的实例名称。来自 keszybz 的回复(我认为是 systemd 开发者)

这种情况以前曾出现过,我们决定不允许多个实例。如果需要,可以以特定于单元的方式将多个字段编码为一个值,或者使用实例作为某些外部存储的密钥,例如磁盘上的目录。对不起。

相关内容