我正在尝试创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? 我坚持为每个实例做一个单独的单元文件?