如果满足条件,重启后自动启动 Linux 服务时出错:"Path in condition not absolute, ignoring"
Error autostarting Linux service after reboot if condition is met: "Path in condition not absolute, ignoring"
我有一个名为 MyService
的服务,只有在“已配置!”时才需要自动启动 NodeJS 进程。可以在配置文件中找到。 MyService.service
文件在 Service
部分包含以下内容:
ExecStart=/usr/bin/sh -c "if grep -q 'Configured!' /path/to/configuration/file.conf; then /usr/bin/node /path/to/node/process.js; fi"
但是,问题是NodeJS进程没有自动启动。事实上,当我查看 journalctl
时,我看到以下错误消息:
Path in condition not absolute, ignoring: "/path/to/configuration/file.conf"
如何更改 ExecStart
以在满足条件时成功自动启动 NodeJS 进程? 这很令人费解,因为当我 运行 命令行上的 ExecStart
命令,它可以正常工作。还有,配置文件的路径是绝对路径。
(另外,请注意,由于这台机器 运行 是旧版本的 systemd,我无法使用 ExecCondition
。)
问题在于 :
中的双引号
"/path/to/configuration/file.conf"
这让 systemd 认为它不是绝对路径。
我有一个名为 MyService
的服务,只有在“已配置!”时才需要自动启动 NodeJS 进程。可以在配置文件中找到。 MyService.service
文件在 Service
部分包含以下内容:
ExecStart=/usr/bin/sh -c "if grep -q 'Configured!' /path/to/configuration/file.conf; then /usr/bin/node /path/to/node/process.js; fi"
但是,问题是NodeJS进程没有自动启动。事实上,当我查看 journalctl
时,我看到以下错误消息:
Path in condition not absolute, ignoring: "/path/to/configuration/file.conf"
如何更改 ExecStart
以在满足条件时成功自动启动 NodeJS 进程? 这很令人费解,因为当我 运行 命令行上的 ExecStart
命令,它可以正常工作。还有,配置文件的路径是绝对路径。
(另外,请注意,由于这台机器 运行 是旧版本的 systemd,我无法使用 ExecCondition
。)
问题在于 :
中的双引号"/path/to/configuration/file.conf"
这让 systemd 认为它不是绝对路径。