pm2 list查询服务时如何通过name或者namespace进行区分
在 PM2 中,如果 pm2 list
显示的所有服务名称(name
)相同,就无法直观地区分不同的进程。这时可以通过 --namespace
(命名空间) 或 自定义 name
来区分服务。以下是解决方案:
方法 1:启动时指定不同的 name
或 namespace
方案 1.1:直接指定 name
# 启动服务时指定唯一名称
pm2 start app.js --name "api-service"
pm2 start worker.js --name "worker-service"
-
查看列表:
pm2 list
此时会显示不同的
name
,便于区分。
方案 1.2:使用 --namespace
(PM2 2.5+ 版本支持)
# 启动服务时指定命名空间
pm2 start app.js --namespace "backend"
pm2 start worker.js --namespace "jobs"
-
查看特定命名空间的进程:
pm2 list --namespace "backend"
方法 2:通过 ecosystem.config.js
配置文件管理
在配置文件中明确定义 name
和 namespace
:
// ecosystem.config.js
module.exports = {apps: [{name: "api-service",namespace: "backend",script: "app.js",},{name: "worker-service",namespace: "jobs",script: "worker.js",}]
};
-
启动所有服务:
pm2 start ecosystem.config.js
-
查看特定命名空间的服务:
pm2 list --namespace "backend"
方法 3:通过 --filter
按名称或命名空间过滤
如果服务已启动但名称重复,可以通过过滤查询:
# 按名称过滤
pm2 list --filter "api-service"# 按命名空间过滤
pm2 list --filter "backend"
方法 4:重命名已存在的进程
如果进程已启动但未正确命名,可以动态修改:
# 根据进程ID重命名
pm2 restart <id> --name "new-name"
# 或通过命名空间批量操作
pm2 restart --namespace "old-namespace" --name "new-name"
总结
场景 | 解决方案 |
---|---|
新启动服务 | 用 --name 或 --namespace 区分 |
已存在服务 | 通过 pm2 restart <id> --name 重命名 |
配置文件管理 | 在 ecosystem.config.js 中定义 name 和 namespace |
快速过滤 | 使用 pm2 list --filter 按名称或命名空间查询 |
通过以上方法,可以清晰地区分 PM2 管理的不同服务!