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脚本中表示执行两点之间的内容,与$(…执行内容…)效果相同