Nginx日志管理——每天定时自动保存Nginx日志文件
程序员文章站
2022-03-26 23:49:35
...
一、引言
这个日志随着时间的增长,访问量越来越大的情况下,文件会越来越大。这个时候就需要我们把之前的日志做一个备份,然后用重新生成一个日志文件。如果这个工作量让每天人为去做,还得到半夜,估计没人愿意干这活。 这个时候就有必要写一个定时任务,每天让系统自己去帮我操作,这样岂不是完美。
二、实现思路
shell脚本+定时任务+nginx信号控制,完成日志定时切割
三、具体实现
在你需要保存日志或者是其他目录,新建一个shell脚本。一般shell脚本都是.sh来标识:
1、创建一个文件"touch savelog.sh",然后使用vim编辑该文件,编辑内容如下:
2、设置定时任务 输入命令"crontab -e"来设置linux定时任务 ,写入设置如下:
* 0 * * * /root/nginx/logs/getlogs.sh,前面时间可以随意更改
3、注意注意 :
如果需要复制脚本内容,请把我写的解释去掉,shell脚本是不支持//注释的
定时任务的时间规则,这里就不多解释,不懂的小伙伴麻烦百度一下。
//标名这个脚本是使用bin目录下bash去执行
#!/bin/bash
//安装目录下日志文件
base_path='/usr/local/nginx/logs/access.log'
//需要保存的目录位置
log_path='/root/nginx/logs'
//获取月份
log_month=$(date -d yesterday +"%Y%m")
//获取当天日期
log_day=$(date -d yesterday +"%d")
//在指定位置创建文件夹
mkdir -p $log_path/$log_month
//将安装目录下的日志文件,移动到指定存储位置
mv $base_path $log_path/$log_month/accuess_$log_day.log
//再使用信号控制切割日志
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`