NPM,主管和Nohup在Shell会话之间退出

时间:2019-07-17 08:30:49

标签: javascript node.js linux npm

我正在使用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...

任何有更多节点经验的人都可以告诉我我是如何弄混主管的,还是可以用来确保节点脚本永远运行的替代方法?

2 个答案:

答案 0 :(得分:0)

我发现了问题所在。除了我最近切换到zsh shell之外,我所做的没有什么错。显然,zsh对待nohup或&有所不同。为什么? Idk。

如果在使用zsh时发生这种情况,只需运行bash,然后使用nohup启动您的应用。

答案 1 :(得分:0)

您可以使用PM2流程管理工具使NodeJS脚本始终保持活动状态。

https://www.npmjs.com/package/pm2