admin管理员组

文章数量:1530085

一、学习背景

  • 大家都用过nginx,关于nginx日志自动清理自动分割备份压缩,方案有很多
  • 但是不论哪一种,核心原理都是使用kill -USR1 + nginx的PID进程文件来实现
  • 本文主要介绍自定义shell脚本+ crond定时任务实现。

二、shell脚本

2.1、脚本实现思路

  • 定义日志要保存的天数SAVE_DAYS=7
  • 重命名当天日志 mv ***.log ***_日期.log
  • 重新打开nginx日志文件kill -USR1 nginx的PID进程文件
  • 压缩已备份日志(节省空间)gzip ***_日期.log
  • 清理保存天数之前的日志find 路径 -type f -mtime +几天前 | xargs rm -f

2.2、完整脚本

clearNginxLog.sh

#!/bin/sh
#Command:/usr/nginx/nginx/tools/clearNginxLog.sh
#Execute time: 00:00:00
LOGS_PATH=/usr/nginx/logs/nginx

#nginx pid path
PID=/usr/nginx/nginx/nginx.pid

#nginx logs save days
SAVE_DAYS=7

#backup data format
TODAY=$(date -d 'today' +%Y-%m-%d)
CURRENTTIME=$(date -d 'today' +%Y-%m-%d-%H-%M-%S)

logfile=$LOGS_PATH/clearNginxLog_${
   TODAY}.log

echo "`date +%Y-%m-%d` `date +%H-%M-%S` Start run the shell $0." >> ${
   logfile}
echo 

本文标签: 脚本备份日志Nginxcrond