#!/bin/bash #按日切割nginx日誌並壓縮,加入crontab每天0:00切割 #作者:fafu_li #時間:2015.08.15 source /etc/profile #載入系統環境變數 source ~/.bash_profile #載入用戶環境變數 set -o nounset... ...
#!/bin/bash #按日切割nginx日誌並壓縮,加入crontab每天0:00切割 #作者:fafu_li #時間:2015.08.15 source /etc/profile #載入系統環境變數 source ~/.bash_profile #載入用戶環境變數 set -o nounset #引用未初始化變數時退出 set -o errexit #執行shell命令遇到錯誤時退出 PID="/usr/local/nginx/logs/nginx.pid" #pid目錄 NGINX="/usr/local/nginx/sbin/nginx" YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) #昨天日期 LOGS_PATH="/data/nginx/logs" #日誌目錄 server_names=("access_chaoneng") #日誌名 server_count=${#server_names[@]} #分割日誌 cut_logs(){ local name=$1 cd $LOGS_PATH /bin/mv -f ${name}.log ${name}.${YESTERDAY}.log #向nginx主進程發送 USR1 信號,USR1 信號是重新打開日誌文件 #不然nginx主進程寫入的還是移動後的日誌文件 #三種方式,根據需求使用任意一種 #service nginx reload #kill -USR1 $(cat $PID) $NGINX -s reload tar zcf ${name}.${YESTERDAY}.log.gz ${name}.${YESTERDAY}.log rm -rf ${name}.${YESTERDAY}.log } #迴圈分割日誌 for (( i = 0; i < $server_count; i++ )); do cut_logs ${server_names[$i]} done