【问题标题】:Where does PM2 save information about the processes you run with it?PM2 在哪里保存有关您使用它运行的进程的信息?
【发布时间】:2020-12-03 06:36:25
【问题描述】:

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

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

root@discord-bot-vps:~# tree . -L 2
.
├── bigbotupdate.sh
├── botupdate.sh
├── ecosystem.config.js
└── fcfs-bot
    ├── db
    ├── index.js
    ├── node_modules
    ├── package.json
    ├── package-lock.json
    ├── README.md
    └── src

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

module.exports = {
  apps : [{
    name: 'FCFS-BOT',
    script: 'index.js',
    instances: 1,
    autorestart: true,
    watch: false,
    shutdown_with_message: true,
    kill_timeout : 3000,
    time: true,
    env: {
      NODE_ENV: 'production',
      FCFS_BOT_TOKEN: 'REDACTED'
    },
  }]
};

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

我尝试测试其他一些东西,包括重命名ecosystem.config.js,然后以pm2 start FCFS-BOT 开始该过程。这也有效,这让我感到困惑,因为我认为需要一个生态系统文件来为流程提供环境变量,如下所述:https://pm2.keymetrics.io/docs/usage/environment/。

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

【问题讨论】:

    标签: node.js pm2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 2017-03-31
      • 1970-01-01
      • 2018-12-21
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多