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

gma*_*man 2 linux ubuntu

我正在尝试使用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                               
Run Code Online (Sandbox Code Playgroud)

现在我想查看 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
Run Code Online (Sandbox Code Playgroud)

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

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

我觉得无论是什么原因,它都是对 linux 上的用户和进程的一些根本误解,我还没有理解。

mas*_*oeh 9

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

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

sudo -i pm2 list
Run Code Online (Sandbox Code Playgroud)

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