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日志切割删除完成。
(如果不成功,或者有报错,可以将问题发在下方评论)