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

Nginx日志切割_第1张图片
3.1、查看contab运行环境

service crond status

Nginx日志切割_第2张图片
3.2、编写contab文件


#编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
crontab -e

#1分钟执行一次
*/1 * * * *  /usr/local/nginx/sbin/logcut.sh

3.3、查看contab运行情况

crontab -l

Nginx日志切割_第3张图片
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}

你可能感兴趣的:(Nginx)