Nodejs forever 无法启动后台进程
Nodejs forever 无法启动后台进程
我用forever去start了一个进程,看文档是Start SCRIPT as a daemon,以后台方式启动的,但此时却弹出了一个node的界面(不能输入,也没有输出) 用forever去list,显示没有进程在跑…… 再关闭node的界面,自动重启两到三次后才能关闭 这个是为何…… 安装时是npm install forever -g
E:>forever start abc.js warn: --minUptime not set. Defaulting to: 1000ms warn: --spinSleepTime not set. Your script will exit if it does not stay up f or at least 1000ms info: Forever processing file: abc.js
E:>forever list info: No forever processes running
E:>
你可以使用pm2, 易用性及所能管理进程能力比forever要强大多了
建议使用pm2
直接使用node可以运行吗
你遇到的问题可能是由于 forever
在启动脚本时未能正确地将进程分离到后台。为了解决这个问题,你需要确保你的命令配置正确,并且使用正确的参数来启动进程。
解决方案
1. 确认 forever
版本
首先,确认你的 forever
是否是最新的版本。你可以通过以下命令更新:
npm update -g forever
2. 使用正确的 forever
启动命令
确保你在启动时指定了合适的参数。通常情况下,你需要设置最小运行时间 (--minUptime
) 和检查间隔 (--spinSleepTime
)。这些参数确保了进程能够在出现异常时被正确重启。
forever start --minUptime 1000 --spinSleepTime 1000 abc.js
3. 检查你的脚本 (abc.js)
确保你的脚本 (abc.js
) 正确运行并且不会立即退出。例如,如果你的脚本只是一个简单的 console.log('Hello')
,它可能在打印完之后就结束了,导致 forever
以为它已经退出并尝试重启。
示例脚本:
// abc.js
const http = require('http');
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000);
console.log('Server is running on port 3000');
4. 验证进程状态
再次运行 forever list
查看进程是否已经成功启动。
forever list
如果仍然有问题,请检查是否有任何错误信息输出,并查看 forever
的日志文件,通常位于 ~/.forever/
目录下,或者通过以下命令指定日志目录:
forever start --logFile /path/to/logfile abc.js
以上步骤应该能帮助你解决 forever
无法正常启动后台进程的问题。