# !/bin/bash
# 你的日志文件存放目录
logs_path="/home/logs/"
# 日志文件的名字,多个需要空格隔开
logs_names=(blog demo happy)
mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
num=${#logs_names[@]}
for((i=0;i
mv ${logs_path}${logs_names[i]}.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/${logs_names[i]}_$(date -d "yesterday" +"%Y%m%d").log
done
#pid的位置,自己查找
kill -USR1 `cat /usr/local/nginx/nginx.pid`
注意:"yesterday" +("%Y"或者"%m"或者"%Y%m%d")这里面+号前一定要有空格,不然会报错。
上面这个脚本中的最后一行必须向 Nginx 的进程发送 USR1 信号以重新打开日志文件,如果不写的话,Nginx 会继续将日志信息写入access_[yyyy-MM-dd].log 的那个文件中,这显然是不正确的。
设置crontab,每天定时切割
首先需要确定你的服务器有没有安装crontab的服务,输入crontab -e命令,有反应就安装了。
如果没有安装,运行yum install vixie-cron 一键安装。
输入crontab -e命令,输入下面的内容:
1、00 00意思为00分00点,也就是凌晨0点,后面“ * * * ”为“ 日 月 年 ”无需定义
2、” /home/logs/cut_nginx_log.sh “为你的shell的路径。
00 00 * * * /bin/bash /home/logs/cut_nginx_log.sh
OK ! 大功告成,每天的0时就会自动完成日志的切割并存在相应的以日期命名的目录中。