centos下日志定时切割删除日志(nginx例子)

nginx日志切割与定时任务删除

运作原理: 编写一个脚本,脚本的核心内容为一、移动nginx的日志文件并修改其名称。二、将七天前的日志文件删除(这里的天数可以改成一天,方便测试)。最后做个定时任务,将编写的脚本加入定时任务(将脚本文件设置为每天的某个时间执行),就能完成定时切割删除日志的功能。

具体操作

编写切割删除脚本
vim /data/log/new.sh (新建一个shell脚本文件)

#!/bin/bash
year=`date +%Y`
month=`date +%m`
day=`date +%d`
logs_backup_path="/data/log/nginx_log"               #日志存储路径(切割下来的日志存放地,同时也是删除日志要去的地方)

logs_path="/usr/local/nginx/logs/"                   #要切割的日志路径(nginx下的日志存放地)
logs_access="access"                                 #要切割的日志(access日志和error日志)
logs_error="error"
pid_path="/usr/local/nginx/logs/nginx.pid"                    #nginx的pid

#[ -d $logs_backup_path ]||mkdir -p $logs_backup_path 
rq=`date +%Y-%m-%d`                                  #获取当天日期并赋给
#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  
#mv为移动nginx的日志并修改名称为当天日期
find /data/log/nginx_log/ -name "*.log" -type f -mtime +1 -exec rm -rf {} \; > /dev/null 2>&1   #删除1天前的日志文件
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)            #重启nginx                                                                                                                                                                                                                                                                                                        

保存退出

编写定时任务

#crontab -e (添加定时任务)

46 10 * * * sh /data/log/new.sh    

在 10:46执行/data/log目录下的new.sh脚本
重启crond

systemctl restart crond

最后修改时间,进行测试,nginx日志切割删除完成。
(如果不成功,或者有报错,可以将问题发在下方评论)

猜你喜欢

转载自blog.csdn.net/waht_do_you_see/article/details/107908527
今日推荐