# 工具介绍
- 可后台运行进程,类似于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
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
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
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
2
3
4
5
# 删除服务
pm2 delete all
pm2 delete id
pm2 delete name
1
2
3
4
5
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
2
3
4
5
6
7
8
9
10
11
12
13
- linux(如果上面没有达到效果的话)
# 接着上面的命令
# 开机服务
systemctl enable pm2-root
# 重启
reboot
1
2
3
4
5
6
2
3
4
5
6
# 问题解决
- 一开程序就stopped
# 应该是换了node版本,原版本开的程序就出问题了
pm2 kill
pm2 start 0
1
2
3
2
3
# 其他命令
pm2 start app.js --watch
1
- 更新pm2
pm2 update
1
- 显示进程的所有信息
pm2 show id
pm2 show name
1
2
3
2
3
# 附录
# nohup
- 后台执行程序,不关机就不会停,适合再linux上运行重复脚本
缺点:少部分情况会挂掉,且不好监控运行情况,pm2更优
# & 代表后台持续运行
nohup bash deploy.sh &
1
2
2