Estou tentando criar um novo arquivo de modelo de unidade systemd que será usado para iniciar várias instâncias de um programa do servidor, cada uma executando um diretório diferente. ou seja, eu preciso que o parâmetro ExecStart seja diferente dependendo da instância.
Eu tentei fazer com que o caminho para a instância fosse o nome da instância, como o seguinte. Eu tenho o seguinte arquivo de unidade /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
Eu faço um daemon-reload:
$ sudo systemctl daemon-reload
E eu tento iniciar uma instância com:
$ sudo systemctl start myserver@/path/to/instance1.service
Eu recebo um erro desse ditado. Veja o status para detalhes. Então, eu faço:
$ sudo systemctl status myserver@/path/to/instance1.service
Eu vejo um erro que o caminho ExecStart não é absoluto:
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.
Existe uma maneira de parametrizar o caminho para o binário ExecStart (e PIDFile)? Estou preso fazendo um arquivo de unidade separado para cada instância?
Tags systemd