我在这里有很多问题,但首先让我提供一些背景信息。
\n\n我正在使用 Node.js 开发一个 Discord 机器人,并使用 PM2 进行流程管理。这是我正在运行的 VPS 主目录的树形结构:
\n\nroot@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\nRun Code Online (Sandbox Code Playgroud)\n\n我最初使用目录中的生态系统文件启动机器人fcfs-bot,其中包含 git 存储库。该ecosystem.config.js文件如下所示:
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};\nRun Code Online (Sandbox Code Playgroud)\n\n此后,我已将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/。
pm2 start ecosystem.config.js——也就是说,是否存在环境变量被“遗忘”的风险?ecosystem.config.js,从中运行一次,然后删除ecosystem.config.js?在尝试自己寻找相同的答案时刚刚遇到了这个问题。
经过一番探索后,我认为这已保留在~/.pm2/dump.pm2. 编辑该文件显示它似乎是 JSON 格式,并且具有从我的原始生态系统文件收集的元数据以及在保存流程定义之前传入的任何其他环境变量。
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |