有两种方法,一是 cronolog,二是 crontab 加 sh 脚本简单实现。
这里选择使用 crontab 加 sh 脚本简单实现。脚本如下:
#!/bin/bash
#日志路径
log_files_path="/home/wwwlogs/"
log_files_dir=${log_files_path}
#需要分割日志文件名称 如文件名称是 cyhour.com.log
log_files_name=(cyhour.com)
#nginx 路径
nginx_sbin="/usr/local/nginx/sbin/nginx"
#日志保存多少天
save_days=22
#下面无需修改
log_files_num=${#log_files_name[@]}
#cut nginx log files
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]}.log ${log_files_dir}${log_files_name[i]}.log_$(date -d "yesterday" +"%Y-%m-%d")
done
#定期删除文件 save_days
find $log_files_path -mtime +$save_days -exec rm -rf {} \;
#重启 nginx
$nginx_sbin -s reload
保存为 cut_nginx_access_logs.sh 文件,上传到 root 目录下。赋予执行权限:
chmod +x cut_nginx_access_logs.sh
添加 crontab 任务
crontab -e
文件最后添加下面代码(每天0点执行脚本)
0 0 * * * /root/cut_nginx_access_logs.sh
然后重启一下 crontab 即可
service crond restart
Comments:0