系统单元模板,用于从不同目录运行的实例

我正在尝试创build一个新的systemd单元模板文件,该文件将用于启动服务器程序的多个实例,每个实例运行在不同的目录之外。 即我需要ExecStart参数根据实例不同而不同。

我试图让实例的path是下面的实例名称。 我有以下单元文件/etc/systemd/system/[email protected]

 [Unit] Description=server instance '%I' Requires=... Wants=... [Service] Type=simple ExecStart=%I/bin/server.sh PIDFile=%I/server.pid [Install] WantedBy=multi-user.target 

我做一个守护进程重新加载:

 $ sudo systemctl daemon-reload 

我试着用下面的例子开始一个实例:

 $ sudo systemctl start myserver@/path/to/instance1.service 

我从这个说法看到错误状态的细节。 所以,我这样做:

 $ sudo systemctl status myserver@/path/to/instance1.service 

我看到ExecStartpath不是绝对的错误:

 May 17 16:04:46 myhost systemd[1]: [/etc/systemd/system/[email protected]:9] \ Executable path is not absolute, ignoring: %I/bin/server.sh May 17 16:04:46 myhost systemd[1]: [email protected] lacks \ both ExecStart= and ExecStop= setting. Refusing. 

有没有办法参数化ExecStart二进制文件(和PIDFile)的path? 我坚持为每个实例做一个单独的单元文件?