如何使用已经运行的 PM2 实例

如何使用已经运行的 PM2 实例

我正在尝试使用PM2进程管理器。我使用 ansible 安装它,Franklinkim.pm2 角色

它起作用了,它启动了我的节点应用程序,如果我手动终止节点应用程序,我会看到 PM2 重新启动它

但是...,我似乎可以访问现有的 PM2 实例。

如果ps aux | grep PM2我得到类型

root      1073  4.1  8.3 648348 41736 ?        Ssl  06:12   0:00 PM2 v0.12.15: God Daemon                               

现在我想查看 PM2 的进程列表,因此我输入sudo pm2 list并得到

[PM2] Spawning PM2 daemon
[PM2] PM2 Successfully daemonized
┌──────────┬────┬──────┬─────┬────────┬─────────┬────────┬────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ memory │ watching │
└──────────┴────┴──────┴─────┴────────┴─────────┴────────┴────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

失败!它没有向我显示正在运行的 PM2,而是生成了一个新的 PM2

我已经尝试过sudo -u root pm2 listpm2 list,但是我得到的是相同的结果,或者如果第二个已经在运行,我只能看到第二个实例的列表,而不是运行我的应用程序的列表。

我觉得无论是什么原因,这都是我对 Linux 上用户和进程的一些根本性误解,我还不太明白。

答案1

pm2将使用$HOME变量来确定.pm2目录所在的位置。当然你可以用覆盖它 $PM2_HOME多变的

当您使用 ansible 调用 pm2 时,看起来您使用的是 root 用户。因此,.pm2目录位于/root/.pm2。因此,解决方案是使用命令

sudo -i pm2 list

当你sudo不带-i参数调用时,所有环境变量(包括$HOME)仍然会从 sudo 之前的原始帐户继承。

相关内容