Systemd 服务启动导致错误 code=exited, status=200/CHDIR

Systemd 服务启动导致错误 code=exited, status=200/CHDIR

我正在尝试使用 systemd 在系统启动时自动运行以下命令。

/usr/bin/node /var/www/html/rest-api/dist/index.js

我已经通过手动运行验证了该命令是否有效,但是当我尝试使用文件启动它时,rest.service出现了错误。

休息服务:

[Unit]
Description=REST API
After=network.target

[Service]
ExecStart=/usr/bin/node /var/www/html/rest-api/dist/index.js
Restart=always
User=nobody
Group=nobody
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/rest-api/dist

[Install]
WantedBy=multi-user.target

journalctl -u rest-api输出:

其中rest.service用户和组 = nobody:

Oct 06 02:10:28 ip-172-31-26-208 systemd[7172]: rest-api.service: Failed at step GROUP spawning /usr/bin/node: No such process
Oct 06 02:10:28 ip-172-31-26-208 systemd[1]: rest-api.service: Main process exited, code=exited, status=216/GROUP
Oct 06 02:10:28 ip-172-31-26-208 systemd[1]: rest-api.service: Unit entered failed state.
Oct 06 02:10:28 ip-172-31-26-208 systemd[1]: rest-api.service: Failed with result 'exit-code'.
Oct 06 02:10:29 ip-172-31-26-208 systemd[1]: rest-api.service: Service hold-off time over, scheduling restart.
Oct 06 02:10:29 ip-172-31-26-208 systemd[1]: Stopped REST API. 

其中rest.service用户和组 = root:

Oct 06 02:20:11 ip-172-31-26-208 systemd[1]: Started REST API.
Oct 06 02:20:11 ip-172-31-26-208 systemd[1]: rest-api.service: Main process exited, code=exited, status=200/CHDIR
Oct 06 02:20:11 ip-172-31-26-208 systemd[1]: rest-api.service: Unit entered  failed state.
Oct 06 02:20:11 ip-172-31-26-208 systemd[1]: rest-api.service: Failed with  result 'exit-code'.
Oct 06 02:20:12 ip-172-31-26-208 systemd[1]: rest-api.service: Service hold-off > time over, scheduling restart.
Oct 06 02:20:12 ip-172-31-26-208 systemd[1]: Stopped REST API.

有什么想法可以解决吗?

答案1

code=exited, status=200/CHDIR是您的关键错误信息。

它表示/var/www/rest-api/dist在您的服务尝试运行时不存在或无法访问。

如果是通过网络安装的,After=network.target并不一定意味着任何给定的网络安装都已安装。甚至可能启动缓慢的本地驱动器尚未安装。要查看您是否遇到竞争条件,请尝试添加延迟或可能使用RequiresMountsFor=,甚至ConditionPathExists=

来源:https://www.freedesktop.org/software/systemd/man/systemd.unit.html

答案2

我遇到了类似的问题,我所有文件夹都正确存在,但出现相同的错误。我通过更改“用户”参数使其正常工作。我将其设置为 root 并成功了。仅供参考。

相关内容