概述
PM2 学习笔记
- 安装
- PM2常用命令
- 管理SpringBoot 项目
- 创建脚本 & 运行服务
- 设置自启动(开机启动)
- 日志分割
- 参考资料
PM2是Nodejs下的进程守护工具,无论win还是linux它都能帮您实现服务的7*24在线。
安装
- 先安装 nodejs 参考:Nodejs 学习笔记 下载安装
- 全局安装 pm2 : (会装在
/usr/node/bin/pm2
)
npm install pm2 -g
- 创建软链接。完成安装
ln -sf /usr/node/bin/pm2 /usr/local/bin/
- 查看服务列表试试。(虽然列表是空的,但是我们看到命令生效了)
pm2 list
PM2常用命令
服务名称还可换成:all
所有服务 、id
指定服务、例:服务名为 sss
参数 | 功能 | 例子 | 别名 |
---|---|---|---|
-h | 显示帮助信息 | pm2 -h | |
list | 显示服务列表 | pm2 list | ls /l /ps /status |
start service-name | 启动服务。支持指定服务名 --name sss666备注:第一次启动要写脚本名 sss.json 启动后服务名就注册成功了可以用了。但是平时手动操作用ID更方便? | pm2 start sss | |
stop service-name | 停止服务 | pm2 stop sss | |
restart service-name | 重启服务 | pm2 restart sss | |
reload service-name | 重启服务(热加载) | pm2 reload sss | |
log service-name | 查看日志 | pm2 log sss | |
log –lines 500 | 查看最新500行 | pm2 log --lines 500 sss | |
delete service-name | 删除服务 备注:修改过启动配置脚本的,要先删再启动才有效。 | pm2 del sss | del |
describe service-name | 查看服务详情忘记配置文件和jar在哪时非常好用 | pm2 desc sss | desc /info /show |
- | - | —————————————— | - |
save | 保存当前服务列表 | pm2 save | expose |
startup | 当前保存的服务列表,设置为自启动 | pm2 startup | |
unstartup | 取消自启动。如果更新了服务的启动脚本,要先停一次再开 | pm2 unstartup | |
flush | 清空所有日志 | pm2 flush |
管理SpringBoot 项目
创建脚本 & 运行服务
- 打包
SpringBoot
项目得到jar包demo.jar
,上传到/home/demo/demo.jar
- 编写配置文件
demoService.json
,上传到/home/demo/demoService.json
字段 | 例 | 说明 |
---|---|---|
name | "sss" | 启动成功后,此字段的值将注册成为服务名称 。(配置文件名和服务名保持一致方便记忆) |
script | "java" | 要执行的程序,比如java 。因为已经在环境变量中,可以直接写 |
cwd | "var/www/" | the directory from which your app will be launched |
args | "-jar", "demo.jar", "--server.port=8080" | 程序的运行参考。我们要运行 jar 包 |
exec_interpreter | NodeJs解析器。本项目无视即可 | |
exec_mode | fork | 非NodeJs固定写fork |
watch | true | 为true 时,如果配置脚本发生变化,将自动重启。(生产环境不建议使用) |
log_date_format | "YYYY-MM-DD HH:mm Z" | 日志时间格式。momentjs 日期格式语法 |
error_file | 错误日志位置。默认:$HOME/.pm2/logs/XXXerr.log | |
out_file | 信息日志位置。默认:$HOME/.pm2/logs/XXXout.log |
{
"name": "demoService",
"script": "java",
"args": [
"-jar",
"-Dserver.port=8001",
"-D-Xms512m",
"-D-Xmx512m",
"demo.jar"
],
"out_file" : "D:/logs/demo-out.log",
"error_file" : "D:/logs/demo-err.log",
"exec_interpreter": "",
"exec_mode": "fork"
}
- 启动服务
pm2 start demoService.json
设置自启动(开机启动)
- 生成启动脚本
pm2 startup
pm2 startup
- 保存当前服务列表
pm2 save
[root@iZuf6fu80p2mfzoh619ifjZ ~]# pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
执行成功的会显示信息保存的位置。(感觉我也不会手动去看它吧)
日志分割
pm2默认无分割日志功能 ,所以需要安装插件:pm2-logrotate
- 安装
pm2 install pm2-logrotate
- 安装完成后,设置参数:
pm2 set pm2-logrotate:<参数> <值>
参数 | 默认值 | 用途 |
---|---|---|
max_size | 10 M | 当一个文件的大小超过这个值时,它将旋转它(它可能是工作人员在它实际超过限制后检查文件)。 在结束时可以指定单位:10G, 10M, 10K |
retain | 30 个 | 这个数字是任何时间保存的旋转日志的数量,这意味着如果你有retain = 7,你将最多有7个旋转的日志和你当前的一个。 |
compress | false | 启用通过gzip压缩所有已旋转的日志 |
dateFormat | YYYY-MM-DD_HH-mm-ss | 日志文件名数据的格式 |
rotateModule | true | 像其他应用程序一样旋转pm2模块的日志 |
workerInterval | 30 秒 | 你可以控制worker检查日志大小的时间间隔(最小值为1) |
rotateInterval | 0 0 * * * 每天午夜 | 这个cron用于执行强制旋转。 我们使用node-schedule来调度cron,因此所有用于node-schedule的有效cron都是此选项的有效cron。 Cron风格: |
TZ | 系统时间 | 这是标准的TZ数据库时区,用于偏移保存的日志文件。 例如,Etc/GMT+1的值带有每小时的日志,将在格林尼治时间14时保存一个文件,日志名称中包含13时(GMT+1)。 |
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
- 配置参考
pm2 set pm2-logrotate:max_size 1K (1KB)
pm2 set pm2-logrotate:compress true (compress logs when rotated)
pm2 set pm2-logrotate:rotateInterval '*/1 * * * *' (force rotate every minute)
参考资料
PM2 快速入门:quick-start
PM2自启动脚本生成器:Startup Script Generator
PM2 Start 配置脚本
momentjs 日期格式语法
日志插件 pm2-logrotate
最后
以上就是认真春天为你收集整理的PM2 学习笔记安装PM2常用命令管理SpringBoot 项目日志分割参考资料的全部内容,希望文章能够帮你解决PM2 学习笔记安装PM2常用命令管理SpringBoot 项目日志分割参考资料所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复