nginx日志切割的2种方法

方式一:手动切割

1.创建cutlogs.sh文件,具体内容如下

#!/bin/bash

# 指定日志和切割后日志备份的目录
YEAR=$(date +%Y)
MONTH=$(date +%m)
DAY=$(date +%d)
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d_%H:%M:%S)    //文件名后缀
LOGS_PATH=/mydata/nginx/log       ##日志存放路径
LOGS_BAK_PATH=/mydata/nginx/log   ##切割后日志存放路径

# 得到1级目录名  
if [[ $(($DAY)) -eq 1 ]]
  then
    if [[ $(($MONTH)) -eq 1 ]]
      then
        LOGS_BAK_PATH=$LOGS_BAK_PATH/$((${YEAR}-1))-12
    else
      if [[ $(($MONTH)) -gt 10 ]]
        then
          LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-$((${MONTH}-1))
      else
          LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-0$((${MONTH}-1))
      fi
    fi
else
    LOGS_BAK_PATH=$LOGS_BAK_PATH/${YEAR}-${MONTH}
fi

# 创建目录
mkdir -p $LOGS_BAK_PATH/${YESTERDAY}

# 复制当前的日志文件到备份的目录
cp ${LOGS_PATH}/access.log ${LOGS_BAK_PATH}/${YESTERDAY}/access_${YESTERDAY}.log
cp ${LOGS_PATH}/error.log ${LOGS_BAK_PATH}/${YESTERDAY}/error_${YESTERDAY}.log

# 清空日志
> ${LOGS_PATH}/access.log
> ${LOGS_PATH}/error.log

2.设定shell的执行权限

chmod +x cutlogs.sh

3.切换到shell脚本所在的目录执行脚本

./cutlogs.sh

方式二:自动切割

1.创建cutlogs.sh文件,具体内容如方式一
2.修改 vi /etc/crontab文件,添加命令,将shell文件加入定时任务

0 * * * * root bash /mydata/nginx/sh/cutlogs.sh

你可能感兴趣的:(nginx,nginx)