我有一个运行 Node.js 应用程序的 systemd 服务文件。该服务似乎运行良好,但是当我停止该服务时,使用systemctl stop train
该服务会进入失败状态。
[root@localhost portaj]# systemctl stop train
[root@localhost portaj]# systemctl status train
train.service - Train Service
Loaded: loaded (/etc/systemd/system/train.service; enabled)
Active: failed (Result: exit-code) since Mon 2014-08-04 04:40:17 UTC; 1s ago
Process: 25706 ExecStart=/opt/node/bin/node /opt/train/src/server/start.js (code=exited, status=143)
Main PID: 25706 (code=exited, status=143)
Aug 04 04:33:39 localhost.localdomain train[25706]: Train Server listening on port 3000
Aug 04 04:40:17 localhost.localdomain systemd[1]: Stopping Train Service...
Aug 04 04:40:17 localhost.localdomain systemd[1]: train.service: main process exited, code=exit.../a
Aug 04 04:40:17 localhost.localdomain systemd[1]: Stopped Train Service.
Aug 04 04:40:17 localhost.localdomain systemd[1]: Unit train.service entered failed state.
我的服务文件如下所示:
[Unit]
Description=Train Service
After=network.target
[Service]
Environment=PORT=4000
Environment=NODE_ENV=development
ExecStart=/opt/node/bin/node /opt/train/src/server/start.js
Restart=on-failure
SyslogIdentifier=train
[Install]
WantedBy=network.target
我怀疑 Node.js 应用程序正在返回 systemd 认为失败的状态代码。如果可能的话,我不确定是否需要让我的 Node.js 应用程序返回不同的状态码。或者,如果我需要修改 systemd 服务文件以某种方式采取不同的行动。
如果有帮助,部署脚本在这里:https ://github.com/JonathanPorta/ansible-train
实际的 Node.js 应用程序在这里: https ://github.com/JonathanPorta/train
在此先感谢您的帮助!