PM2 Manager
Manage remote PM2 processes via SSH connection. This skill provides commands for monitoring, controlling, and maintaining Node.js applications deployed with PM2 process manager on remote servers.
Prerequisites
- - SSH access to target server
- PM2 installed on remote server
- SSH key-based authentication (recommended)
- Target server accessible from local machine
Usage
Basic Process Management
List all processes:
CODEBLOCK0
Start/Stop/Restart services:
CODEBLOCK1
Log Management
View real-time logs:
CODEBLOCK2
Log rotation and cleanup:
CODEBLOCK3
Monitoring and Performance
Real-time monitoring:
CODEBLOCK4
Memory and CPU usage:
CODEBLOCK5
Advanced Operations
Environment management:
CODEBLOCK6
Process scaling:
CODEBLOCK7
Health checks and auto-restart:
CODEBLOCK8
Ecosystem Configuration
Create ecosystem.config.js for complex deployments:
CODEBLOCK9
Deploy with ecosystem:
CODEBLOCK10
Startup and Persistence
Save current process list:
CODEBLOCK11
Setup startup script:
CODEBLOCK12
Batch Operations Script Example
CODEBLOCK13
Troubleshooting
Common issues and solutions:
- 1. Process not starting:
CODEBLOCK14
- 2. High memory usage:
CODEBLOCK15
- 3. Port conflicts:
CODEBLOCK16
- 4. Clear PM2 cache:
CODEBLOCK17
Production Example (Pro-Power System)
CODEBLOCK18
This skill streamlines remote PM2 management, making it easy to maintain Node.js applications running on production servers.
PM2管理器
通过SSH连接管理远程PM2进程。该技能提供用于监控、控制和维护远程服务器上使用PM2进程管理器部署的Node.js应用程序的命令。
前置条件
- - 对目标服务器具有SSH访问权限
- 远程服务器上已安装PM2
- 基于SSH密钥的身份验证(推荐)
- 本地机器可访问目标服务器
使用方法
基本进程管理
列出所有进程:
bash
ssh user@server pm2 list
ssh user@server pm2 status
启动/停止/重启服务:
bash
启动特定应用
ssh user@server pm2 start ecosystem.config.js
ssh user@server pm2 start app.js --name myapp
重启特定进程
ssh user@server pm2 restart myapp
ssh user@server pm2 restart 0 # 按ID重启
停止进程
ssh user@server pm2 stop myapp
ssh user@server pm2 delete myapp # 完全移除
重启所有进程
ssh user@server pm2 restart all
日志管理
查看实时日志:
bash
所有进程
ssh user@server pm2 logs
特定进程
ssh user@server pm2 logs myapp
ssh user@server pm2 logs 0
最后N行
ssh user@server pm2 logs myapp --lines 100
仅错误日志
ssh user@server pm2 logs myapp --err
日志轮转与清理:
bash
清空所有日志
ssh user@server pm2 flush
安装日志轮转
ssh user@server pm2 install pm2-logrotate
监控与性能
实时监控:
bash
监控仪表盘
ssh user@server pm2 monit
显示详细信息
ssh user@server pm2 show myapp
ssh user@server pm2 describe 0
内存和CPU使用情况:
bash
按内存使用量列出
ssh user@server pm2 list --sort memory
JSON格式输出便于解析
ssh user@server pm2 jlist
ssh user@server pm2 prettylist
高级操作
环境管理:
bash
使用不同环境启动
ssh user@server pm2 start ecosystem.config.js --env production
ssh user@server pm2 start app.js --env development
更新环境变量
ssh user@server pm2 restart myapp --update-env
进程扩展:
bash
扩展到4个实例
ssh user@server pm2 scale myapp 4
以集群模式启动
ssh user@server pm2 start app.js -i max # 使用所有CPU
ssh user@server pm2 start app.js -i 4 # 4个实例
健康检查与自动重启:
bash
设置重启前最大内存
ssh user@server pm2 start app.js --max-memory-restart 100M
设置重启延迟
ssh user@server pm2 start app.js --restart-delay 3000
禁用自动重启
ssh user@server pm2 start app.js --no-autorestart
生态系统配置
为复杂部署创建ecosystem.config.js:
javascript
module.exports = {
apps: [
{
name: main-app,
script: ./app.js,
instances: 2,
env: {
NODE_ENV: development,
PORT: 3000
},
env_production: {
NODE_ENV: production,
PORT: 8080
}
},
{
name: worker,
script: ./worker.js,
instances: 1,
cron_restart: 0 0 *, // 每日重启
maxmemoryrestart: 200M
}
]
};
使用生态系统部署:
bash
上传并启动
scp ecosystem.config.js user@server:/path/to/app/
ssh user@server cd /path/to/app && pm2 start ecosystem.config.js
生产环境
ssh user@server cd /path/to/app && pm2 start ecosystem.config.js --env production
启动与持久化
保存当前进程列表:
bash
ssh user@server pm2 save
设置启动脚本:
bash
生成启动脚本
ssh user@server pm2 startup
按照提示运行生成的命令
保存并启用启动
ssh user@server pm2 save && pm2 startup systemd
批量操作脚本示例
bash
#!/bin/bash
pm2-batch-restart.sh
SERVER=user@10.0.0.213
APPS=(main-app linebot-server liff-server)
echo 正在重启 $SERVER 上的PM2服务...
for app in ${APPS[@]}; do
echo 正在重启 $app...
ssh $SERVER pm2 restart $app
if [ $? -eq 0 ]; then
echo ✅ $app 重启成功
else
echo ❌ $app 重启失败
fi
done
echo 检查状态...
ssh $SERVER pm2 list
故障排除
常见问题及解决方案:
- 1. 进程无法启动:
bash
ssh user@server pm2 logs myapp --err
ssh user@server pm2 show myapp
- 2. 内存使用过高:
bash
ssh user@server pm2 restart myapp # 快速修复
ssh user@server pm2 reload myapp # 零停机重启
- 3. 端口冲突:
bash
ssh user@server pm2 show myapp | grep port
ssh user@server netstat -tlnp | grep :3000
- 4. 清除PM2缓存:
bash
ssh user@server pm2 kill && pm2 start ecosystem.config.js
生产环境示例(Pro-Power系统)
bash
生产服务器管理
SERVER=administrator@10.0.0.213
检查所有服务
ssh $SERVER pm2 list
重启特定服务
ssh $SERVER pm2 restart main-app
ssh $SERVER pm2 restart linebot-server
ssh $SERVER pm2 restart ProPower-tunnel
查看日志
ssh $SERVER pm2 logs main-app --lines 50
监控性能
ssh $SERVER pm2 monit
该技能简化了远程PM2管理,使维护生产服务器上运行的Node.js应用程序变得轻松。