#!/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复制