如何切割Nginx的运行日志并定时清理

如何切割Nginx的运行日志并定时清理

Nginx日志默认不做人为处理,日志文件会存放在access.log,error.log两个文件中,随着时间的推移,日志量会越来越大,不方便编辑查看,为了让日志按天存放,可以做一些配置,设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。

创建脚本文件

#编辑并创建一个nginx_logs_clean.sh脚本文件
vi /opt/nginx_logs_clean.sh

编辑脚本内容(自动7天后清理日志)

#!/bin/bash

LOG_PATH=/usr/local/<a href="https://www.nosblog.cn/tag/nginx" class="st_tag internal_tag " rel="tag" title="标签 Nginx 下的日志">nginx</a>/logs/
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
PID=/usr/local/nginx/logs/nginx.pid
SAVETIME=7
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
find ${LOG_PATH} -mtime +${SAVETIME} -name \*.log |xargs rm -rf {}
kill -USR1 `cat ${PID}`

编辑脚本内容(手动清理日志)

#!/bin/bash
LOG_PATH=/usr/local/<a href="https://www.nosblog.cn/tag/nginx" class="st_tag internal_tag " rel="tag" title="标签 Nginx 下的日志">nginx</a>/logs/
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
PID=/usr/local/nginx/logs/nginx.pid
mv ${LOG_PATH}access.log ${LOG_PATH}access-${YESTERDAY}.log
mv ${LOG_PATH}error.log ${LOG_PATH}error-${YESTERDAY}.log
kill -USR1 `cat ${PID}`

设置定时任务

# 没有安装crontab的需要运行安装
sudo yum install crontabs

# 添加一项定时任务执行
crontab -e

# 定时任务内容
0 0 * * * /opt/nginx_logs_clean.sh

# 重启定时任务
service crond restart

定时任务表达式

Cron表达式是,分为5或6个域,每个域代表一个含义,如下所示:

星期几 年(可选)  
取值范围 0-59 0-23 1-31 1-12 1-7 2020/2021/2022/…

常用的表达式

  • 每分钟执行:
*/1 * * * *
  • 每日凌晨(每天晚上23:59)执行:
59 23 * * *
  • 每日凌晨1点执行:
0 1 * * *
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容