π¦ ClawHub
PM2 Process Manager
by @asteinberger
Manage Node.js applications with PM2 process manager. Use for deploying, monitoring, and auto-restarting Node apps in production. Covers starting apps, viewing logs, setting up auto-start on boot, and managing multiple processes.
TERMINAL
clawhub install pm2π About This Skill
name: pm2 description: Manage Node.js applications with PM2 process manager. Use for deploying, monitoring, and auto-restarting Node apps in production. Covers starting apps, viewing logs, setting up auto-start on boot, and managing multiple processes.
PM2 Process Manager
Production process manager for Node.js with built-in load balancer.
Install
npm install -g pm2
Quick Start
# Start an app
pm2 start app.js
pm2 start npm --name "my-app" -- start
pm2 start "npm run start" --name my-appWith specific port/env
pm2 start npm --name "my-app" -- start -- --port 3000
PORT=3000 pm2 start npm --name "my-app" -- start
Common Commands
# List processes
pm2 list
pm2 lsLogs
pm2 logs # All logs
pm2 logs my-app # Specific app
pm2 logs --lines 100 # Last 100 linesControl
pm2 restart my-app
pm2 stop my-app
pm2 delete my-app
pm2 reload my-app # Zero-downtime reloadInfo
pm2 show my-app
pm2 monit # Real-time monitor
Auto-Start on Boot
# Save current process list
pm2 saveGenerate startup script (run the output command with sudo)
pm2 startupExample output - run this:
sudo env PATH=$PATH:/opt/homebrew/bin pm2 startup launchd -u username --hp /Users/username
Next.js / Production Builds
# Build first
npm run buildStart production server
pm2 start npm --name "my-app" -- startOr with ecosystem file
pm2 start ecosystem.config.js
Ecosystem File (ecosystem.config.js)
module.exports = {
apps: [{
name: 'my-app',
script: 'npm',
args: 'start',
cwd: '/path/to/app',
env: {
NODE_ENV: 'production',
PORT: 3000
}
}]
}
Useful Flags
| Flag | Description |
|------|-------------|
| --name | Process name |
| --watch | Restart on file changes |
| -i max | Cluster mode (all CPUs) |
| --max-memory-restart 200M | Auto-restart on memory limit |
| --cron "0 * * * *" | Scheduled restart |
Cleanup
pm2 delete all # Remove all processes
pm2 kill # Kill PM2 daemon
pm2 unstartup # Remove startup script
π‘ Examples
# Start an app
pm2 start app.js
pm2 start npm --name "my-app" -- start
pm2 start "npm run start" --name my-appWith specific port/env
pm2 start npm --name "my-app" -- start -- --port 3000
PORT=3000 pm2 start npm --name "my-app" -- start