- 2022年,大家新年快乐哈
- 一. 写shell,放入到定时任务
- 1.根据自己NGINX配置的日志存储路径编写脚本
- 2.修改权限,设置定时任务即可
- 二. 安装插件:logrotate
今天给大家带来的是: NGINX日志自动切割脚本
一. 写shell,放入到定时任务 1.根据自己NGINX配置的日志存储路径编写脚本#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/data/logs/logs_backup/$year$month" #日志存储路径
logs_path="/data/logs/" #要切割的日志路径
logs_access="access" #要切割的日志
logs_error="error"
pid_path="/var/run/nginx.pid" #nginx的pid
[ -d $logs_backup_path ]||mkdir -p $logs_backup_path
rq=`date +%Y%m%d`
for i in `ls -al ${logs_path} | grep "^-" | awk '{print $9}' `
do
#echo ${i}
mv ${logs_path}${i} ${logs_backup_path}/${i}_${rq}.bak
done
#mv ${logs_path}${logs_access}.log ${logs_backup_path}/${logs_access}_${rq}.log
#mv ${logs_path}${logs_error}.log ${logs_backup_path}/${logs_error}_${rq}.log
kill -USR1 $(cat /var/run/nginx.pid) #重新加载一下,生成新的日志文件
2.修改权限,设置定时任务即可
chmod 777 cut_ngnix_log.sh crontab –e 59 23 * * * bash /usr/local/nginx/shell/cut_ngnix_log.sh #每天23:59分开始执行;二. 安装插件:logrotate
yum install logrotate #安装完成后,自动在/etc/cron.daily/下生成个logrotate脚本文件。
vim /etc/logrotate.d/nginx
/var/log/nginx/*.log #此处为nginx存储日志的地方;
{
daily #指定转储周期为每天
rotate 5 #保存5天的日志
missingok #如果日志文件丢失,不要显示错误
compress #通过gzip 压缩转储以后的日志
delaycompress #当前转储的日志文件到下一次转储时才压缩
notifempty #当日志文件为空时,不进行轮转
postrotate #执行的指令
if [ -f /var/run/nginx/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx/nginx.pid`
fi
endscript #PID路径根据实际路径填写;
}
保存即可,测试效果:
# logrotate -vf /etc/logrotate.d/nginx access.log access.log.1 error.log error.log.1



