如何解决使用 PM2 API 重新启动,在 PM2 中运行时也重新启动脚本自身
我想用 Javascript 编写一个脚本,通过 PM2 API 控制 PM2,并在 PM2 中运行。
pm2.js
var pm2 = require('pm2');
setTimeout(() => {
restartProcess('client');
},2000); //After 2 seconds restart the 'client' process
function restartProcess(name) {
pm2.connect(function(err) {
if (err) {
console.error(err);
process.exit(2);
}
console.log ("restarting ",name)
pm2.restart(name);
pm2.disconnect;
})
}
当我仅在终端中运行 pm2.js
时,这可以正常工作。
但是当我在 PM2 中运行 pm2.js
时,脚本不断循环。
我检查了进程的正常运行时间,似乎不仅 client
重新启动,而且 pm2.js
本身也重新启动,并且在 2 秒后一次又一次,一次又一次......
如果我正在查看 pm2 logs pm2
,我会在 stdout
中看到 pm2 列表。如果我从终端运行 pm2.js
,我看不到。
我不明白为什么会发生这种情况,是否有解决方法?
解决方法
你为什么要这样做?
PM2 是一个守护进程管理器,可帮助您管理和保持应用程序 24/7 全天候在线
请先检查 official document。 PM2 旨在管理长时间运行的任务,例如 Web 服务器。如果 Web 服务器因任何原因崩溃或退出,pm2 会干扰并再次唤醒它。这是默认行为。
您的 pm2.js 只是在很短的时间内(2 秒)运行然后退出。所以如果你用PM2启动它,它会一次又一次地启动......
没有理由在 PM2 中运行该脚本。如果您仍然需要,请使用 --no-autorestart
标志运行它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。