pm2常用命令的基本使用

4,276 阅读3分钟

为什么需要使用PM2?

因为node.js 是单进程,进程被杀死后整个服务就跪了,所以需要进程管理工具

介绍

PM2 是一个带有负载均衡功能的 Node 应用的进程管理器
当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的

特性

内建负载均衡(使用Node cluster 集群模块)
后台运行
0秒停机重载(维护升级的时候不需要停机).
具有Ubuntu和CentOS 的启动脚本
停止不稳定的进程(避免无限循环)
控制台检测
提供 HTTP API
远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

安装PM2

(1) 在服务器端安装pm2
npm install --global pm2
(2) 查看pm2的安装路径
whereis pm2
(3) 查看安装的pm2的版本
pm2 -v

更新PM2

更新PM2非常快(少于几秒)并且无缝。

首先确保您正确保存了所有进程:

pm2 save

然后从NPM安装最新的PM2版本:

npm install pm2 -g

最后更新内存中的PM2进程:

pm2 update

这样一来,您现在拥有了一个全新的PM2工具!

使用pm2启动项目

pm2 start npm --name 【项目的别名】 -- run 【package.json中的脚本命令>】
例如: pm2 start npm --name blog3_4 -- run develop

npm run dev 等同于 pm2 start npm -- run dev
npm start 等同于 pm2 start npm -- start

语法:pm2 start npm --watch --name 【项目的别名】 -- run 【package.json中的脚本命令>】
其中 -- watch监听代码变化,-- name重命名任务名称,-- run后面跟脚本名字

查看pm2管理的应用列表

pm2 list

pm2停止应用

pm2 stop 0 (0是id的值)
pm2 stop npm (npm是name的值)

pm2停止所有项目

pm2 stop all

pm2重启某个项目

pm2 restart 0 (0是id的值)
pm2 restart npm (npm是name的值)

pm2重载某个项目

pm2 reload 0 (0是id的值)
pm2 reload npm (npm是name的值)

pm2重启所有项目

pm2 restart all
pm2 reload all
两者哪一种都行

pm2删除某个管理的项目

pm2 delete 0 (0是id的值)
pm2 delete npm (npm是name的值)

pm2删除删除所有管理的项目

pm2 delete all

使用pm2携带参数启动项目

pm2 start npm --name 【项目的别名】 -- run 【package.json中的脚本命令>】

例如: pm2 start npm --name blog3_4 -- run develop  

常用入参如下:

# 指定应用程序名称
--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常用日志操作命令

pm2 logs --raw # 显示流中的所有进程日志
pm2 flush # 清空所有日志文件
pm2 reloadLogs # 重新加载所有日志

pm2查看仪表盘,监视所有进程

pm2 monit

pm2其他的命令

pm2 startup # 产生 init 脚本 保持进程活着
pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)