Я пытаюсь создать новый файл шаблона модуля systemd, который будет использоваться для запуска нескольких экземпляров серверной программы, каждый из которых работает в другом каталоге. т.е. мне нужно, чтобы параметр ExecStart отличался в зависимости от экземпляра.
Я попытался сделать путь к экземпляру именем экземпляра, как показано ниже. У меня есть следующий файл модуля /etc/systemd/system/myserver@.service
:
[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/myserver@.service:9] \
Executable path is not absolute, ignoring: %I/bin/server.sh
May 17 16:04:46 myhost systemd[1]: tistfe@-path-to-instance1.service lacks \
both ExecStart= and ExecStop= setting. Refusing.
Есть ли способ параметризовать путь к двоичному файлу ExecStart (и PIDFile)? Я застрял в создании отдельного файла модуля для каждого экземпляра?