liunx切割nginx日志脚本&自动定时删除日志

工作中遇到将nginx日志按日切割并定时自动删除7天之前的nginx日志需求

1、先解决日志切割问题,代码如下:

#! /bin/bash
LOG_PATH="/usr/local/nginx/logs"
RECORD_TIME=$(date -d "yesterday"  +%Y-%m-%d)
PID=/usr/local/nginx/logs/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
mv ${LOG_PATH}/info.log ${LOG_PATH}/info.${RECORD_TIME}.log
mv ${LOG_PATH}/notice.log ${LOG_PATH}/notice.${RECORD_TIME}.log
mv ${LOG_PATH}/log_port8082.log ${LOG_PATH}/log_port8082.${RECORD_TIME}.log
kill -USR1 $(cat $PID)

2、将以上切割日志代码做成 .sh 可执行文件 cut_nginx_log.sh 

     本文中,新建cut_nginx_log.sh文件,将代码复制到文件内

3、编写删除7天前的日志文件脚本,代码如下:(路径根据自己实际路径来)

find /usr/local/nginx/logs/ -mtime +7 -name "*.log" -exec rm -f {} \;

4、将以上删除日志文件做成 .sh 可执行文件 auto_del_7_days_log.sh

     本文中,新建 auto_del_7_days_log.sh 文件,将代码复制到文件内

5、以上两个脚本都准备好后,可以单独执行两个脚本进行测试。

6、脚本测试没问题后,开始配置定时任务实现定时清理需求,步骤及代码如下:

1)将脚本文件放入到nginx sbin目录下: /usr/local/nginx/sbin/   
2)对文件进行授权

chmod +x /usr/local/nginx/sbin/auto_del_7_days_log.sh
chmod +x /usr/local/nginx/sbin/cut_nginx_log.sh

3)配置定时任务

crontab -e
50 23 * * * /usr/local/nginx/sbin/cut_nginx_log.sh >/dev/null 2>&1
55 23 * * * /usr/local/nginx/sbin/auto_del_7_days_log.sh >/dev/null 2>&1

结束

以下crontab命令详解介绍,来自百度搜索

crontab命令的基本格式为:crontab [-u user] file crontab [-u user] [ -e | -l | -r ],其中:

  • -e 用于编辑当前用户的定时任务。
  • -l 用于列出当前用户的定时任务。
  • -r 用于删除当前用户的所有定时任务。

在编辑crontab文件时,每个条目都定义了一个任务的执行时间和要运行的命令或脚本。时间表达式由5个字段组成,分别表示分钟、小时、日、月、周,字段之间用空格分隔。例如,0 */1 * * * /home/work/start-service.sh 表示每天的每小时的第0分钟执行/home/work/start-service.sh脚本。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值