原因是这个进程结束之后自动关闭了,pm2以为是异常退出,所以就重启了。我们举个例子。
ecosystem.config.js
module.exports = {
apps: [
{
name: "push",
script: "index.js",
watch: true,
ignore_watch: ["node_modules", "logs", "info.json"],
error_file: "./logs/app-err.log",
out_file: "./logs/app-out.log",
log_date_format: "YYYY-MM-DD HH:mm:ss",
env_dev: {
NODE_ENV: "development",
},
env_prod: {
NODE_ENV: "production",
},
},
],
};
这是一个简单的pm2配置,所有的输出日志会记录到logs/app-out.log
里面,然后看一下index.js
的内容
console.log(123);
这里面只有这一行语句,执行pm2 start之后应该只会打印一次123
,但是观察一下logs/app-out.log
里面的内容,123
会一直打印,执行一下pm2 ls
也会看到,这个进程重启了很多次。
原因就是最开始提到的问题,代码执行完毕之后这个进程就自动关闭了,pm2以为是异常退出,所以就重启了。
我们来验证一下这个,把index.js中的内容换一下:
console.log(123);
setInterval(() => {
console.log(456);
}, 3e3);
我们新加一个定时器,理论上启动之后会一直执行,不会出现自动关闭的情况,如果执行之后logs/app-out.log
里面的内容123
只打印一次,456
每隔3s打印一次的话。那么就验证了上面的说法。
可以验证一下,最后的结论验证成功。