Node.js 为什么我的节点应用程序进程在我永远使用时不断停止?
在一个免费的Amazon EC2实例上,我在express上设置了一个简单的node.js Hello World应用程序 如果我运行Node.js 为什么我的节点应用程序进程在我永远使用时不断停止?,node.js,amazon-web-services,amazon-ec2,forever,Node.js,Amazon Web Services,Amazon Ec2,Forever,在一个免费的Amazon EC2实例上,我在express上设置了一个简单的node.js Hello World应用程序 如果我运行npm start,我的应用程序运行良好,我可以从浏览器中点击它,我会看到以下输出: > myappname@0.0.0 start /home/ec2-user/app > node ./bin/www 我已经在全球安装了永久工具。当我运行永久启动app.js时,我看到: warn: --minUptime not set. Defaulti
npm start
,我的应用程序运行良好,我可以从浏览器中点击它,我会看到以下输出:
> myappname@0.0.0 start /home/ec2-user/app
> node ./bin/www
我已经在全球安装了永久工具。当我运行永久启动app.js
时,我看到:
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: app/app.js
但是,当我选中“永久列表”时,我看到该过程已停止:
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [0] 2v0J /usr/local/bin/node app.js 2455 2457 /home/ec2-user/.forever/2v0J.log STOPPED
这是日志中唯一的消息:错误:永久检测到的脚本被信号:null杀死
我找不到任何其他日志信息。为什么它会立即停止
编辑:我试着用nohup forever start app.js运行它,但遇到了同样的问题。我在同一个ssh会话中一个接一个地运行永久启动
和永久列表
。应用程序的进程似乎立即停止。我猜在您断开ssh连接后,进程会停止吗
首先尝试使用nohup
永远运行
nohup forever start app.js
当您断开与ssh的连接时,服务器将终止shell的所有子进程nohup
断开进程与其父shell的连接。我能够解决我的问题,这要感谢对类似问题的回答:
当我使用永久启动/bin/www
而不是传递app.js时,进程一直在运行
这是否会引起任何麻烦还有待观察。对于我来说,我必须使用“sudo forever”才能让它工作。如果您在更新代码后启动服务器。提取最新代码并运行
npm install
快跑
forever start app.js
这将解决问题我正在同一ssh会话中运行永久启动app.js
和永久列表
,并且总是立即停止。我只是试着将其作为nohup forever start app.js运行,得到了相同的结果:我一检查forever进程就停止了。检查日志文件。您的节点进程是否因脚本错误而死亡?如果我检查永久列表中显示的日志文件,我看到的只是上面问题中列出的错误。是否还有其他日志文件可供检查?我相信nohup命令中缺少该文件。。ie:nohup forever start app.js&
您必须调用“forever start”。在您的情况下(如您执行npm启动时所见),文件位于./bin/www,而不是“app.js”。考虑到为什么他们甚至应该允许永远使用。/bin/www
如果只有在没有开始的情况下使用永远开始/bin/www
才能实现使用永远的目标,您可以在SSH控制台上看到日志,但如果我可以不使用永远而只使用节点myscript.js
,为什么我要永远使用myscript.js呢?