PM2 使用脚本启动了进程,用pm2 list却看不到进程

今天部署一个项目的时候,使用了脚本在机器上启动了项目,但是上去机器上,用sudo pm2 ls查看的时候,却发现返回的进程列表是空的。但是项目又真的已经启动且可访问。现象就是项目已经启动,但是在pm2却看不到这个项目,找了很久的问题,终于在github的一个issue找到了原因。

原因就是脚本启动项目的时候,重新开了一个PM2 God Daemon进程,跟我用sudo看的PM2 进程不是同一个:

ps aux | grep pm2
root 16281 0.0  0.1 686328 50708 ?  Ssl  Aug25  0:26 PM2 v4.4.0: God Daemon (/root/.pm2)
root 24513 1.8  0.1 605484 41308 ?  Ssl  19:54  0:00 PM2 v4.4.0: God Daemon (/data/services/pm2home/)

第一个God Daemon是使用sudo时查看的PM2,脚本使用的是第二个God Daemon

如何查看同一台机器上的PM2实例

实际上,这是PM2提供的一个功能,允许用户在同一台机器上生成多个PM2 实例。要查看不同实例下PM2管理的进程,可以使用:

sudo PM2_HOME=/data/services/pm2home/ pm2 ls

这样,第二个PM2实例的项目就可以被打印出来了。

至于为什么脚本控制pm2启动的进程会重新开启一个PM2实例, 而不是使用/root/.pm2这个就还需要再研究下。否则其他人维护项目的时候,使用sudo pm2 ls却看不到进程可能会引起困惑。

参考资料:
multiple-pm2-on-the-same-server
Apps not showing on list #992

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。