logo头像

云影sky

PM2实用指南、PM2详解、PM2轻松实现脚本后台执行、Node如何在后台运行、如何让npm start在后台运行

如何让已经写好的 Node 代码在后台运行呢?即使关闭了命令行也能运行,这怎么做到呢?这里推荐一个工具 PM2

PM2 官网
PM2 GitHub

大概解释下官网的介绍

PM2 是一个应用管理器,它自身具备负载均衡能力,它可以让应用在后台一直运行,也可以让无缝重启应用,中间不会停止服务,可以开机启动,对开发者来讲可以极大地方便应用部署,降低维护成本。

安装

1
npm i -g pm2

启动

1
2
3
4
5
pm2 start app.js --watch   #实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload
pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
pm2 start app.js -n appname -i max -e err.log -o out.log # 以 appname 启动 app.js,错误当前目录 err.log 为 error log,out.log 为输出 log
pm2 start bb.sh --interpreter bash # 用 bash 执行脚本
pm2 start test.py--interpreter python3 # 用 python 环境执行脚本

启动类似 node xxx.js 的项目

1
pm2 start --name xxxsname xxx.js  # 将运行的实例命名为 xxxsname

启动类似 npm start 的项目

1
pm2 start --name appname npm -- start # 设置应用名为 appname

启动类似 npm run serve 的项目

1
pm2 start --name servename npm -- run serve # 设置应用名为 servename

–name xxx 或者 -n xxx 表示将应用命名为 xxx

以配置文件的形式启动

1
pm2 start pm2config.json

查看 PM2 部署的应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pm2 list               # 显示所有进程状态
pm2 ls # 显示所有进程状态
pm2 show 0 # 显示某个应用的详细信息
pm2 monit # 监视所有进程
pm2 logs # 显示所有进程日志
pm2 log 0 # 查看 0 应用的日志
pm2 stop all # 停止所有进程
pm2 restart all # 重启所有进程
pm2 reload all # 0秒停机重载进程
pm2 stop 0 # 停止指定的进程,0 是应用 id
pm2 restart 0 # 重启指定的进程,0 是应用 id
pm2 startup # 产生 init 脚本 保持进程活着,startup 是指系统boot, 开机进程自启动
pm2 unstartup # 禁用开机进程自启动
pm2 delete 0 # 杀死指定的进程,0 是应用 id,会删除该应用
pm2 delete all # 杀死全部进程,会删除所有应用

pm2 list

pm2 show

pm2 monit

pm2 logs

pm2 log bb

PM2 文件目录

PM2 文件默认放在 $HOME/.pm2

自定义启动文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"apps": [{
"name": "appname",
"exec_interpreter": "node",
"script": "./b.js",
"cwd": "/home/uftp/test-pm2",
"exec_mode": "fork",
"max_memory_restart": "1G",
"autorestart": true,
"node_args": [],
"watch": false
"error_file" : "./test-err.log",
"out_file": "./test-out.log",
"pid_file": "./test.pid",
"env": {
"NODE_ENV": "development"
},
"min_uptime": "60s",
"max_restarts": 30
}]
}

apps: 是一个数组,数组中的每一个对象表示一个运行中的应用,可以配置多个应用,同时启动
exec_interpreter 执行环境,node bash python 等等
script: 将要执行的脚本
cwd: 应用的路径
exec_mode: 应用程序启动模式,默认是fork也可设置cluster_mode
max_memory_restart: 超过这个指定的值之后将会重启应用 1G 500M
autorestart: 出现故障之后是否自动重启,默认 true
watch: 监听文件更改,更改文件之后自动重启
error_file: error log 错误日志
out_file: out log 输出日期
pid_file: 进程文件
min_uptime: 最短的运行时间,如果少于这个时间就退出了,则会触发 max_restarts
max_restarts: 最大重启次数

◆ ◆ ◆  ◆ 


推荐阅读

看了那么多,TCP/IP究竟是什么(二)

看了那么多,TCP/IP究竟是什么(一)

TCP三次握手和四次分手

vuejs 中双向绑定的模拟实现



止水聊技术

关注回复关键词送学习资料,帮你快速掌握刚需技能

关注