[Manager] pm2
Install
npm
npm install pm2 -g
Basic Command
$ pm2 start app.js
$ pm2 start --name my_app app.js # Giving a name for it
$ pm2 list
$ pm2 stop <app_name|namespace|id|'all'|json_conf>
$ pm2 restart <app_name|namespace|id|'all'|json_conf>
$ pm2 delete <app_name|namespace|id|'all'|json_conf>
# Zero Downtime Reload
$ pm2 reload all
# Show logs
$ pm2 logs <app_name|namespace|id|'all'|json_conf>
# Show more lines
$ pm2 logs <app_name|namespace|id|'all'|json_conf> --lines 30
More Command
# Terminal Based Dashboard
$ pm2 monit
# Open a Cluster Mode, named "my_server" with 5 nodes
$ pm2 start dist/server.js --name my_server -i 5
# Scales `my_server` up by 3 workers
$ pm2 scale my_server +3
# Scales `my_server` up or down to 2 workers total
$ pm2 scale my_server 2
With Ecosystem File
PM2 also support using config.json
/ config.js
to active the script.
ecosystem.json
{
"apps": [
{
"name": "services-name",
"script": "./server.js",
"exec_mode": "fork",
"env": {
"NODE_ENV": "production"
},
"time": true,
"interpreter": "node@20.18.0",
}
]
}
And control with
# Start all applications
pm2 start ecosystem.json
# Stop all
pm2 stop ecosystem.json
# Restart all
pm2 restart ecosystem.json
# Reload all
pm2 reload ecosystem.json
You may also active multi appications at onces
ecosystem.json
{
"apps": [
{
"name": "services-name-one",
"script": "./frontend/server.js",
"exec_mode": "fork",
"env": {
"NODE_ENV": "production"
},
"time": true,
"interpreter": "node@22.0.0",
},
{
"name": "services-name-two",
"script": "./backend/server.js",
"exec_mode": "fork",
"env": {
"NODE_ENV": "production"
},
"time": true,
"interpreter": "node@20.18.0",
},
{
"name": "services-name-three",
"script": "./scrapper/server.js",
"instances" : "4",
"exec_mode" : "cluster",
"time": true,
"interpreter": "node@18.1.0",
}
]
}
More Usage ON:
https://pm2.keymetrics.io/docs/usage/application-declaration/ย
Last updated on