pm2

2021/10/24

# 工具介绍

  • 可后台运行进程,类似于nohup,但比nohup好用
  • 如果进程意外挂掉,pm2会自己重启它,保证进程的持续性
  • 可以设置开机启动,让后台脚本持续运行
  • 适合用来保护服务器进程不挂掉

# 安装

npm install pm2 -g 

# yarn方式
yarn global add pm2

# linux
apt update && apt install sudo curl && curl -sL https://raw.githubusercontent.com/Unitech/pm2/master/packager/setup.deb.sh | sudo -E bash -
1
2
3
4
5
6
7

# 启动服务

# 再对应目录下执行
pm2 start app.js

# 给进程起名字
pm2 start app.js --name myName 

# 后台运行脚本
pm2 start deploy.sh

# 开静态资源服务器
pm2 serve ./dist 80

# dev模式持续后台开启,且监听
pm2 start npm --watch  -- run dev
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 保护进程

  • 进程有可能中途挂掉,或者直接 kill -9 22222 直接强制关掉
  • 这种情况,普通的方式启动服务就挂掉了

# 管理进程

# 查看进程产生的日志
pm2 logs
pm2 log 0

# 查看所有的服务
pm2 list

# 查看程序占用情况
pm2 monit

# 进程改名
pm2 restart 0 --name blog
1
2
3
4
5
6
7
8
9
10
11
12

# 关闭服务

pm2 stop all

pm2 stop id

pm2 stop name
1
2
3
4
5

# 删除服务

pm2 delete all

pm2 delete id

pm2 delete name
1
2
3
4
5

# 开机自动启动

  • windows系统
# 使用pm2启动node
pm2 start /home/wwwroot/web.js --watch

# 确认执行的任务列表
pm2 list

# 保存这些进程列表
pm2 save

# 生成自启动脚本
pm2 startup 

# 复制生成的脚本,再执行一次
1
2
3
4
5
6
7
8
9
10
11
12
13
  • linux(如果上面没有达到效果的话)
# 接着上面的命令
# 开机服务
systemctl enable pm2-root

# 重启
reboot
1
2
3
4
5
6

# 问题解决

  • 一开程序就stopped
# 应该是换了node版本,原版本开的程序就出问题了
pm2 kill
pm2 start 0
1
2
3

# 其他命令

pm2 start app.js --watch
1
  • 更新pm2
pm2 update
1
  • 显示进程的所有信息
pm2 show id

pm2 show name
1
2
3

# 附录

# nohup

  • 后台执行程序,不关机就不会停,适合再linux上运行重复脚本

缺点:少部分情况会挂掉,且不好监控运行情况,pm2更优

# & 代表后台持续运行
nohup bash deploy.sh &
1
2

# 配置文件

官方文档 (opens new window)

上次更新: 11/1/2024