javascript - 使用 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.js
在 PM2 中运行时,脚本一直在循环。我检查了进程的正常运行时间,似乎不仅client
重新启动,而且pm2.js
本身也重新启动,并且在 2 秒后再次,一次又一次......
如果我正在查看,我会在 pm2列表中pm2 logs pm2
看到stdout
。我看不到我是否pm2.js
从终端运行。
我不明白为什么会发生这种情况,是否有解决方法?
解决方案
您可以向您的服务发送 SIGKILL,然后 PM2 将再次启动它。
pm2.connect((err) => {
pm2.sendSignalToProcessName('SIGKILL', name, (e, p) => {
pm2.disconnect();
});
});
推荐阅读
- python - 尝试为 discord.py 音乐机器人下载某些视频时弹出清单错误
- macos - IntelliJ Idea IDE 社区版ideaIC-2020.1.4 和ideaIC-2020.2.3 未在Mac OS 版本Big Sur 11.0.1 中打开
- xcode - 访问部分首选项菜单时 Xcode 崩溃
- django - 如何 JSON 序列化包含文件的对象?
- java - Android/Java:如何使用 int Color 设置 MaterialShapeDrawable 的背景颜色?
- orbeon - 嵌入式 orbeon - 如何定义语言
- javascript - Mongoose:如何获取其子文档包含值的文档(多对一关系)
- cmake - cmake : 子项目配置完成后调用 find_package()
- r - 为什么我的上下 CI 间隔返回为 NA?
- javascript - 确定是否单击了具有 id 的元素