gpt4 book ai didi

node.js - systemd 服务处于非事件状态(已死)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:38 27 4
gpt4 key购买 nike

[Service]
Type = forking
PIDFile = /var/run/learninglocker.pid
ExecStart = /usr/bin/npm start
WorkingDirectory = /opt/learninglocker
User = root
Group = root
EnvironmentFile = /opt/learninglocker/environment
StandardOutput = syslog
StandardError = syslog
SyslogIdentifier = learninglocker
LimitCORE = infinity
LimitNOFILE = infinity
LimitNPROC = infinity
TimeoutStartSec = "2min 30s"

[Unit]
After = network.target

[Install]
WantedBy = multi-user.target

它是一个 Node 应用。

当我运行“npm start”时,它会被执行并运行四个不同的进程。但是,当我运行“systemctl start learninglocker.service”时,它运行了几秒钟 [即事件(运行)] 并失败,并且四个进程再次落后。

我的问题是:我可以使用 Type = Simple 还是应该使用“forking”?

如果使用类型“forking”,服务将“失败”且没有错误消息。

最佳答案

您可以在这篇文章中找到 Simple、Forking 和 Systemd 的其他启动选项之间的区别:https://superuser.com/questions/1274901/systemd-forking-vs-simple/1274913

通常,如果您的启动脚本被阻塞,您必须使用 simple,如果您的启动脚本在没有 systemd 帮助的情况下自行 fork (这可能是您使用 npm start 的情况),则必须使用 fork。

此外,您可能必须在服务描述符中添加“RemainAfterExit=true”,以便 systemd 认为该服务仍在运行。您还需要定义一个 ExecStop 脚本,以便 systemd 知道如何停止您的服务。

您还可以引用本主题,了解如何为 node js 定义 systemd 启动脚本。

关于node.js - systemd 服务处于非事件状态(已死),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54823778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com