Nginx基础05:Nginx日志分割

nginx日志分割非常重要,可对nginx日志进行切割和分析处理,比如实现一个定时任务,去处理nginx日志

推荐:小型网站1-2天分割一次、中型网站1天分割一次、大型网站每小时分割一次

分割步骤:

  • 写一个shell,把原日志文件移动到日志备份目录下
    • shell脚本命名log.sh,放入到 nginx/sbin目录下
    • shell脚本内容如下
  • 原日志文件重新生成新文件
    • 执行shell脚本需对脚本文件有访问执行权限:chmod 777 log.sh
  • 定时脚本,定时移动日志文件
    • 执行#crontab -e
    • 添加定时执行脚本:*/1 * * * * sh /usr/local/nginx/sbin/log.sh    表示每分钟执行一次脚本
#!/bin/sh

#基础路径
BASE_DIR=/usr/local/nginx
#待分割备份的日志文件
BASE_FILE_NAME=nginx.com.log

#原日志文件目录
CURRTENT_PATH=$BASE_DIR/logs
#备份日志文件目录
BAK_PATH=$BASE_DIR/datalogs

#待分割备份的日志文件全路径:/usr/local/nginx/logs/nginx.com.log
CURRTENT_FILE=$CURRTENT_PATH/$BASE_FILE_NAME

#生成备份文件时前缀:202006071030,当前表达式是每分钟备份一次,如果每天备份一次去掉%H%M
BAK_TIME=`/bin/date -d yesterday +%y%m%d%H%M`
#备份日志文件全路径:/usr/local/nginx/datalogs/202006071030-nginx.com.log
BAK_FILE=$BAK_PATH/$BAK_TIME-$BASE_FILE_NAME

#输出备份文件日志名称,可有可无
echo $BAK_FILE

#备份之前先停止nginx
$BASE_DIR/sbin/nginx -s stop

#原日志文件移动到指定的备份文件
mv $CURRTENT_FILE $BAK_FILE

#启动nginx,重新生成带分割的日志文件
$BASE_DIR/sbin/nginx

shell脚本知识点:

  "`"是1前面的点,在shell脚本中表示执行两点之间的内容,与$(…执行内容…)效果相同

原文地址:https://www.cnblogs.com/chai-blogs/p/13059902.html