tongyi007 发表于 2018-11-8 13:13:03

linux下nginx日志切割

  一、创建日志切割脚本nginx-log
  #!/bin/bash
  ## 零点执行该脚本
  ## nginx 日志文件所在的目录
  LOGS_PATH=/var/log/nginx/
  ## 获取昨天的 yyyy-MM-dd
  YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
  ## 重命名日志文件
  mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
  mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${YESTERDAY}.log
  ## 向 Tengine 主进程发送 USR1 信号。USR1 信号是重新打开日志文件
  kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
  ## 进入日志目录
  cd $LOGS_PATH
  ## 压缩日志文件并删除原文件
  tar -zcvf access_${YESTERDAY}.tar.gz access_${YESTERDAY}.log --remove access_${YESTERDAY}.log
  tar -zcvf error_${YESTERDAY}.tar.gz error_${YESTERDAY}.log --remove error_${YESTERDAY}.log
  ## 只保留7天的日志
  DAYS=7
  ## 删除7天前的日志压缩包
  find ${LOGS_PATH} -name "error_*" -type f -mtime +$DAYS -exec rm {} \;
  find ${LOGS_PATH} -name "access_*" -type f -mtime +$DAYS -exec rm {} \;
  二、设置计划任务,此处设置为每天00:00执行一次
  # vi /etc/crontab
  00*** root /home/nginx-log
  # service crond restart
  # chkconfig crond on

页: [1]
查看完整版本: linux下nginx日志切割