我正在使用Node LTS。我有一个脚本,需要保持该脚本始终运行。即使从SSH断开连接,我也需要它保持运行。我还听说了名为supervisor的节点程序包,该程序包可确保进程死亡后重新启动。我的package.json
具有以下内容:
"start-continuous": "supervisor -t -i . index.js"
通常在Linux上,当我们希望程序在注销后保持运行时,我们会执行以下操作:
nohup ./programToRun > output.log 2>&1 &
因此,有了上述package.json
,我运行了此
nohup npm run start-continuous > supervisor.out 2>&1 &
这样做之后,我的节点应用程序开始按预期在后台运行。但是,当我断开与SSH的连接并返回时,它已经退出了。在日志中,我看到:
Received SIGHUP, killing child process...
Parent process exiting, terminating child...
任何有更多节点经验的人都可以告诉我我是如何弄混主管的,还是可以用来确保节点脚本永远运行的替代方法?
答案 0 :(得分:0)
我发现了问题所在。除了我最近切换到zsh shell之外,我所做的没有什么错。显然,zsh对待nohup或&有所不同。为什么? Idk。
如果在使用zsh时发生这种情况,只需运行bash
,然后使用nohup
启动您的应用。
答案 1 :(得分:0)
您可以使用PM2流程管理工具使NodeJS脚本始终保持活动状态。