安装
npm install pm2@latest -g
# or
yarn global add pm2
启动应用程序
pm2 start app.js
或者启动任何其他应用程序:
pm2 start bashscript.sh
pm2 start python-app.py --watch
pm2 start binary-file -- --port 1520
您可以传递给CLI的一些选项:
# 指定服务名称
--name <app_name>
# 文件更改时观察并重新启动应用程序
--watch
# 设置应用程序重新加载的内存阈值
--max-memory-restart <200MB>
# 指定日志文件
--log <log_path>
# 向脚本传递额外参数
-- arg1 arg2 arg3
# 自动重启之间的延迟
--restart-delay <delay in ms>
# 在日志前添加时间
--time
# 不自动重启应用程序
--no-autorestart
# 指定强制重启的cron
--cron <cron_pattern>
# 附加到应用程序日志
--no-daemon
管理进程
pm2 restart app_name
pm2 reload app_name
pm2 stop app_name
pm2 delete app_name
代替app_name你可以通过:
all对所有流程进行操作id对特定的进程id进行操作
# 列出由PM2管理的所有应用程序的状态
pm2 [list|ls|status]
# 要实时显示日志
pm2 logs
# 旧日志
pm2 logs --lines 200
# 仪表盘
pm2 monit
集群模式
对于Node.js应用程序,PM2包括一个自动负载平衡器,它将在每个衍生进程之间共享所有HTTP[s]/Websocket/TCP/UDP连接。
要以集群模式启动应用程序:
pm2 start app.js -i max
使用配置文件管理应用
创建文件
pm2 ecosystem
这将生成一个ecosystem.config.js文件:
module.exports = {
apps: [
{
name: "app1", // 服务名称
script: "./index1.js", // 启动文件路径
cwd: "", // 要启动的应用程序的目录
instances: 2, // 要启动实例的数量,负载均衡
watch: true, //是否启动监听
args: ['test'], // 进程参数
env: { NODE_ENV: "development" }, // 将出现在您的应用程序中的 env 变量
env_xxx: {
NODE_ENV: "xxx", //使用pm2注入xxx变量进行切换
},
log_date_format: "YYYY-MM-DD HH:mm Z", //日志时间格式
error_file: "./log/index-error.log", //错误文件路径
out_file: "./log/index-out.log", //输出日志文件路径
max_restarts: 10, //最大重启数
restart_delay: 4000, //重启延迟时间ms
autorestart: true, //是否自动重启
cron_restart: "0 0 3 * * ?", //定时重启 使用cron表达式,每晚3点重启
},
{
name: "app2",
script: "./index2.js",
},
],
};
启动:
pm2 start ecosystem.config.js
命令集合(官网)
# Fork mode
pm2 start app.js --name my-api # Name process
# Cluster mode
pm2 start app.js -i 0 # Will start maximum processes with LB depending on available CPUs
pm2 start app.js -i max # Same as above, but deprecated.
pm2 scale app +3 # Scales `app` up by 3 workers
pm2 scale app 2 # Scales `app` up or down to 2 workers total
# Listing
pm2 list # Display all processes status
pm2 jlist # Print process list in raw JSON
pm2 prettylist # Print process list in beautified JSON
pm2 describe 0 # Display all information about a specific process
pm2 monit # Monitor all processes
# Logs
pm2 logs [--raw] # Display all processes logs in streaming
pm2 flush # Empty all log files
pm2 reloadLogs # Reload all logs
# Actions
pm2 stop all # Stop all processes
pm2 restart all # Restart all processes
pm2 reload all # Will 0s downtime reload (for NETWORKED apps)
pm2 stop 0 # Stop specific process id
pm2 restart 0 # Restart specific process id
pm2 delete 0 # Will remove process from pm2 list
pm2 delete all # Will remove all processes from pm2 list
# Misc
pm2 reset <process> # Reset meta data (restarted time...)
pm2 updatePM2 # Update in memory pm2
pm2 ping # Ensure pm2 daemon has been launched
pm2 sendSignal SIGUSR2 my-app # Send system signal to script
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart
更多ecosystem.config.js配置,请访问官网