从 1 个集群中重新加载所有 pm2 集群
Reload all pm2 clusters from within 1 of the clusters
我在多个 pm2 集群上有一个 nodejs 应用程序 运行ning。我创建了一条路线,通过它更新应用程序的代码(从 Git 远程拉取新代码),然后我尝试使用 exec
到 运行 重新加载命令重新加载所有 pm2 集群( pm2 重新加载 [服务器]).
我遇到的问题是,一旦启动该进程的集群为了重新加载而终止,它不会继续重新加载剩余的集群。
因此,在研究(阅读 node documentation and looking at this SO question)之后,似乎很明显处理此问题的正确方法是 spawn
子进程和 运行 unref()
方法就可以了。然而,这并没有改变任何东西。一些集群重新加载,但不是全部。
代码如下:
const {spawn} = require('child_process');
const reload = spawn(`pm2`, [`reload`, `server`], {detached: true, stdio: 'ignore'});
reload.unref();
我也尝试添加 reload.disconnect()
,基于节点
,但出现错误 disconnect is not a function
。
此外,我尝试通过分离的子进程执行包含该命令的 bash 文件,而不是在子进程中 运行 命令 'pm2 reload server'。结果是一样的。
总而言之,我想知道如何让所有集群的重新加载继续,即使在启动进程的集群终止后也是如此。
我也想知道,为什么我试过的方法都不行。
我仍然不知道为什么它没有按照我在问题中发布的方式工作。
但是,对我有用的是 运行 一个带有分离派生子进程的 js 文件,该文件又运行一个分离派生子进程来执行重新加载命令。
在我的第一个文件中:
const {spawn} = require('child_process');
const reload = spawn(`node`, [`/reload.js`], {detached: true, stdio: 'ignore'});
reload.unref();
在 reload.js 我有:
const {spawn} = require('child_process');
const reload = spawn(`pm2`, [`reload`, `server`], {detached: true, stdio: 'ignore'});
reload.unref();
注意:我首先尝试在 reload.js 中使用 exec
,结果与问题中概述的结果相同。
我希望这对任何试图完成类似事情的人有所帮助。
我在多个 pm2 集群上有一个 nodejs 应用程序 运行ning。我创建了一条路线,通过它更新应用程序的代码(从 Git 远程拉取新代码),然后我尝试使用 exec
到 运行 重新加载命令重新加载所有 pm2 集群( pm2 重新加载 [服务器]).
我遇到的问题是,一旦启动该进程的集群为了重新加载而终止,它不会继续重新加载剩余的集群。
因此,在研究(阅读 node documentation and looking at this SO question)之后,似乎很明显处理此问题的正确方法是 spawn
子进程和 运行 unref()
方法就可以了。然而,这并没有改变任何东西。一些集群重新加载,但不是全部。
代码如下:
const {spawn} = require('child_process');
const reload = spawn(`pm2`, [`reload`, `server`], {detached: true, stdio: 'ignore'});
reload.unref();
我也尝试添加 reload.disconnect()
,基于节点
,但出现错误 disconnect is not a function
。
此外,我尝试通过分离的子进程执行包含该命令的 bash 文件,而不是在子进程中 运行 命令 'pm2 reload server'。结果是一样的。
总而言之,我想知道如何让所有集群的重新加载继续,即使在启动进程的集群终止后也是如此。 我也想知道,为什么我试过的方法都不行。
我仍然不知道为什么它没有按照我在问题中发布的方式工作。
但是,对我有用的是 运行 一个带有分离派生子进程的 js 文件,该文件又运行一个分离派生子进程来执行重新加载命令。
在我的第一个文件中:
const {spawn} = require('child_process');
const reload = spawn(`node`, [`/reload.js`], {detached: true, stdio: 'ignore'});
reload.unref();
在 reload.js 我有:
const {spawn} = require('child_process');
const reload = spawn(`pm2`, [`reload`, `server`], {detached: true, stdio: 'ignore'});
reload.unref();
注意:我首先尝试在 reload.js 中使用 exec
,结果与问题中概述的结果相同。
我希望这对任何试图完成类似事情的人有所帮助。