PM2 在哪里保存有关您使用它运行的进程的信息?

3 node.js pm2

我在这里有很多问题,但首先让我提供一些背景信息。

\n\n

我正在使用 Node.js 开发一个 Discord 机器人,并使用 PM2 进行流程管理。这是我正在运行的 VPS 主目录的树形结构:

\n\n
root@discord-bot-vps:~# tree . -L 2\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 bigbotupdate.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 botupdate.sh\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ecosystem.config.js\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 fcfs-bot\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 db\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.js\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 node_modules\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 package-lock.json\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n
Run Code Online (Sandbox Code Playgroud)\n\n

我最初使用目录中的生态系统文件启动机器人fcfs-bot,其中包含 git 存储库。该ecosystem.config.js文件如下所示:

\n\n
module.exports = {\n  apps : [{\n    name: \'FCFS-BOT\',\n    script: \'index.js\',\n    instances: 1,\n    autorestart: true,\n    watch: false,\n    shutdown_with_message: true,\n    kill_timeout : 3000,\n    time: true,\n    env: {\n      NODE_ENV: \'production\',\n      FCFS_BOT_TOKEN: \'REDACTED\'\n    },\n  }]\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

此后,我已将ecosystem.config.js文件移动到主目录中,但是当pm2 start ecosystem.config.js从主目录启动该进程时,它仍然有效。这对我来说是违反直觉的,因为我认为index.js对脚本的引用将不再起作用,因为它现在位于相对于ecosystem.config.js. 不过,一切正常。

\n\n

我尝试测试其他一些事情,包括重命名ecosystem.config.js,然后使用 启动该过程pm2 start FCFS-BOT。这也有效,这让我感到困惑,因为我的印象是生态系统文件是为流程提供环境变量所必需的,如下所述:https://pm2.keymetrics.io/docs/usage/environment/

\n\n
    \n
  1. PM2 如何存储这些数据?在哪里可以找到它?
  2. \n
  3. 我是否应该继续启动我的应用程序pm2 start ecosystem.config.js——也就是说,是否存在环境变量被“遗忘”的风险?
  4. \n
  5. 如果没有,是否有更好的方法来为 PM2 应用程序配置环境变量,而不是创建一个ecosystem.config.js,从中运行一次,然后删除ecosystem.config.js
  6. \n
\n

mar*_*son 5

在尝试自己寻找相同的答案时刚刚遇到了这个问题。

经过一番探索后,我认为这已保留在~/.pm2/dump.pm2. 编辑该文件显示它似乎是 JSON 格式,并且具有从我的原始生态系统文件收集的元数据以及在保存流程定义之前传入的任何其他环境变量。