出于某种原因,systemd 没有替换%i
或%I
使用 ExecStart 中的实例名称
/systemd/system/service/[email protected]
[Unit]
Description=Foo service for %I
[Service]
User=keith
ExecStart=/path/to/foo/%i/food
...
/path/to/foo/bar/food
#/bin/bash
node /path/to/foo/bar/bard.js
然后我运行:
$ sudo systemctl daemon-reload
$ sudo systemctl start foo@bar
$ sudo systemctl status foo@bar
● [email protected] - Foo service for bar
Loaded: loaded (/etc/systemd/system/[email protected]; disabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2016-09-30 19:07:02 EDT; 6s ago
Process: 18705 ExecStart=/path/to/foo/%i/food (code=exited, status=203/EXEC)
Main PID: 18705 (code=exited, status=203/EXEC)
Sep 30 19:07:02 kptow systemd[1]: Started Foo service for bar.
Sep 30 19:07:02 kptow systemd[1]: [email protected]: Main process exited, code=exited, status=203/EXEC
Sep 30 19:07:02 kptow systemd[1]: [email protected]: Unit entered failed state.
Sep 30 19:07:02 kptow systemd[1]: [email protected]: Failed with result 'exit-code'.
描述%I
中的 被替换,但%i
ExecStart 中的 没有。我试过使用%i
/ %I
,但都不管用。
的第一个参数
ExecStart=
必须是可执行文件的绝对路径。不接受换人。如果你只是加载一个启动 Node.js 的 bash 脚本,你可以明确地这样做:
为了补充接受的答案,任何文件(包括二进制文件)都可以使用替换执行
/usr/bin/env
: