我正在尝试创建一个新的 systemd 单元模板文件,该文件将用于启动服务器程序的多个实例,每个实例都运行在不同的目录中。即,我需要根据实例而不同的 ExecStart 参数。
我尝试将实例的路径设为如下所示的实例名称。我有以下单元文件:/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
我看到一个错误,表明 ExecStart 路径不是绝对的:
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)的路径?我是否必须为每个实例创建一个单独的单元文件?