当前位置: 首页 > article >正文

linux定时删除2周前的日志文件

前言

有好几次,部署的docker容器差不多每个月都会因为日志越攒越多,导致可用空间不足,服务就宕机了,所以就需要写一个定时删除日志的脚本,但这个shell脚本和crontab的写法有5年多没接触了,所以很不熟悉,还是花了点时间来处理,这里记录下~

delScript.sh的编写

#!/bin/bash

# 定义日志目录
LOG_DIR="/home/project/prod/logs"

# 获取当前日期
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")
echo "-------------------$CURRENT_DATE--------------------"
echo "删除的日志文件所在的目录为: $LOG_DIR"

# 计算2周前的日期
ONE_WEEK_AGO=$(date --date='14 days ago' +"%Y-%m-%d")

# 删除2周前的日志文件
echo "开始删除 $ONE_WEEK_AGO 前的日志文件"
find ${LOG_DIR} -type f -name "all.log.*" -o -name "error.log.*" | while read -r file;
 do
    file_date=$(echo "$file" | grep -oP '\d{4}-\d{2}-\d{2}')
    if [[ "$file_date" < "$ONE_WEEK_AGO" ]]; then
        rm -f "$file"
        echo "已删除文件: $file"
    fi
done
echo "完成今日:$CURRENT_DATE 的日志文件删除任务!"

crontab的编写

sudo crontab -e

进入后在英文键盘模式下,点击键盘 i 键,粘贴下面的命令:

0 1 * * * sh /home/shell/delScript.sh >> /home/shell/delLog_prod.log 2>&1

0 1 * * * 表示每天的凌晨1点执行这个删除日志的脚本,我在/home/project/prod/logs目录下touch了all.log.2024-11-03和error.log.2024-11-03文件后,把定时任务时间调整为12点07分执行,到了这个时间点之后,执行cat /home/shell/delLog_prod.log日志,看到了想要的日志,文件也删除了的,接着又touch了all.log.2024-11-02和error.log.2024-11-02,修改定时任务时间为12点11分,到了这个点之后再看日志是追加了的,如下:

-------------------2024-11-21 12:07:02--------------------
删除的日志文件所在的目录为: /home/project/prod/logs
开始删除 2024-11-07 前的日志文件
已删除文件: /home/project/prod/logs/all.log.2024-11-03
已删除文件: /home/project/prod/logs/error.log.2024-11-03
完成今日:2024-11-21 的日志文件删除任务!
-------------------2024-11-21 12:11:01--------------------
删除的日志文件所在的目录为: /home/project/prod/logs
开始删除 2024-11-07 前的日志文件
已删除文件: /home/project/prod/logs/all.log.2024-11-02
已删除文件:/home/project/prod/logs/error.log.2024-11-02
完成今日:2024-11-21 的日志文件删除任务!

分析了下每天两个日志文件要占用450兆的内存,存14天,大概就是占6个g,通过
df -Th查看磁盘情况,还是很充足的。

----------------知道的越多,不知道的越多------------


http://www.kler.cn/a/404712.html

相关文章:

  • 【智谱清言-注册_登录安全分析报告】
  • C07.L07.STL之映射.应用2.统计数字
  • AUTOSAR网络管理中的主动唤醒与被动唤醒
  • 低速接口项目之串口Uart开发(一)——串口UART
  • 第75期 | GPTSecurity周报
  • php:nginx如何配置WebSocket代理?
  • windows基础二
  • sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
  • Docker nginx容器高可用(Keepalived)
  • 每日论文22-24ESSERC一种54.6-65.1GHz多路径同步16振荡器
  • 力扣第59题螺旋矩阵 II
  • 无人机场景 - 目标检测数据集 - 车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」
  • React中使用echarts写出3d旋转扇形图
  • uniapp点左上角返回键, 重复来回跳转的问题 解决方案
  • C# OpenCV 通过高度图去筛选轮廓
  • 智慧路面管理系统平台 智慧照明 智慧市政 智慧交通
  • 40分钟学 Go 语言高并发:Go Channel使用与实践教程
  • k8s 集群安装
  • RTC QoS方法十三.(ReedSolomonFEC简介)
  • 音频信号采集前端电路分析
  • android版本ijkplayer2024编译笔记
  • 开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-vLLM+Docker(七)
  • CSS3中的响应式布局(媒体查询)之媒体类型、媒体特性、运算符
  • list =和addAll在List<实体类>数组的应用
  • 刘艳兵-DBA041-使用常用的数据泵功能导出时,主要需要关注以下哪些步骤?
  • Kafka 2.8 源码导读