Nginx日志切割
1、概述
日志切割就是日志备份,用crontab表达式按时间段去执行shell脚本,把当前日志备份起来。把新的日志存入新的日志文件里。
2、shell脚本
#进入目录
cd /usr/local/nginx/sbin
#!/bin/bash
#设置日志的存放目录
LOG_HOME="/usr/local/nginx/logs"
#备分文件名称 $() 用命令执行,备份日志文件名为当前日期
#date "+%Y-%m-%d-%H:%M" 年-月-日-小时:分 精确到分
LOG_PATH_BAK="$(date "+%Y-%m-%d-%H:%M")"
#修改当天的日志名称 ${变量} 引用值
mv ${LOG_HOME}/access.log ${LOG_HOME}/access.${LOG_PATH_BAK}.log
mv ${LOG_HOME}/error.log ${LOG_HOME}/error.${LOG_PATH_BAK}.log
#得到进程名称,在nginx执行时,在logs目录下会生成nginx的进程,就是nginx.pid文件。
NGINX_PID="$(cat ${LOG_HOME}/nginx.pid)"
#USR1亦通常被用来告知应用程序重载配置文件
kill -USR1 ${NGINX_PID}
#可读可写可执行
chmod +777 logcut.sh
3、contab
3.1、查看contab运行环境
service crond status
3.2、编写contab文件
#编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
crontab -e
#1分钟执行一次
*/1 * * * * /usr/local/nginx/sbin/logcut.sh
3.3、查看contab运行情况
crontab -l
3.4、查看日志
3.5、如果做日志统计,全部放在logs文件夹下面也不是很好,建议按天统计当天文件夹,或者按月统计。按天统计的shell文件,自己造的脚本,不好请多多包涵。
#!/bin/bash
#设置日志的存放目录
LOG_HOME="/usr/local/nginx/logs"
#获取年
CURRENT_YEAR="$(date +%Y)"
#获取月
CURRENT_MONTH="$(date +%m)"
#获取日
CURRENT_DAY="$(date +%d)"
#创建日志文件
LOG_PATH_BAK=${LOG_HOME}/${CURRENT_YEAR}/${CURRENT_MONTH}
#if fi
#-d filename: 如果 filename为目录,则为真
if [ ! -d "$LOG_PATH_BAK" ]; then
mkdir -p $LOG_PATH_BAK
fi
#修改当天的日志名称 ${变量} 引用值
mv ${LOG_HOME}/access.log ${LOG_PATH_BAK}/access.${CURRENT_DAY}.log
mv ${LOG_HOME}/error.log ${LOG_PATH_BAK}/error.${CURRENT_DAY}.log
#得到进程名称
NGINX_PID="$(cat ${LOG_HOME}/nginx.pid)"
#USR1亦通常被用来告知应用程序重载配置文件
kill -USR1 ${NGINX_PID}
还没有评论,来说两句吧...