#!/bin/bash
#原nginx日志存放路徑
log_files_path="/home/wwwlogs/"
#nginx切割後存放路徑
log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
#待切割日志名稱集合如access.log error.log
log_files_name=(access error)
#nginx啟動腳本路徑
nginx_sbin="/usr/local/nginx/sbin/nginx"
#日志儲存時間
save_days=30
#建立存放目錄
mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}
#循環切割日志
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]}_$(date -d "yesterday" +"%Y%m%d").log
done
#删除超過30天的日志檔案
find $log_files_path -mtime +$save_days -exec rm -rf {} \;
#重新開機nginx服務,重新生成新的檔案
$nginx_sbin -s reload
腳本放好後,接下來就可以建立一個計劃任務來執行這個腳本,首先給這個腳本授予可執行權限:
chmod +x cut_nginx_logs.sh
然後建立計劃任務:
crontab -e
添加一行任務:
00 00 * * * /bin/bash /home/crontab/cut_nginx_logs.sh