Nginx日志分割Shell脚本 按小时分割

2013-01-07 6,661次浏览 发表评论

如果使用LNMP网站环境的话,默认Nginx只会生成一个访问日志,并且是在每天的积累,日志文件会变的非常大,如果需要做一下日志的分析,无论是使用脚本分析,还是把日志下载本地分析,都不太方便。每天分割Nginx的访问日志,有利于分析日志。 脚本内容:

#!/bin/bash

#Nginx日志路径
log_files_path="/home/weblog"

#需要处理的日志名,空格分开
log_files_name=( aaa.com bbb.com ccc.com )

#Nginx路径
nginx_sbin="/usr/local/nginx/sbin/nginx"

#保存时间
save_days=5

##########################################################################

the_date=$(date +%Y-%m-%d)
the_time=$(date +%H)
del_dir=$(date -d "$save_days day ago" +%Y-%m-%d)

log_files_dir=${log_files_path}/$the_date
[ -e $log_files_dir ] || mkdir -p $log_files_dir

log_num=${#log_files_name[*]}
for (( i=0; i<${log_num}; i++ )); do
    mv ${log_files_path}/${log_files_name[i]}.log ${log_files_dir}/${log_files_name[i]}_${the_time}.log
done
$nginx_sbin -s reload

#delete
[ -e $log_files_path/$del_dir ] && rm -fr $log_files_path/$del_dir

需要注意的是:Nginx日志名称和脚本中log_files_name要能对应上,例如:www.1987.com.log,修改/etc/crontab文件,加入0 */1 * * * root /root/satools/cut_nginx_logs.sh,每个小时执行一次。

评论

随便说点,聊聊天~