在 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 管理的不同服務!