Linux定时清理日志_自动化清理方案

4次阅读

linux日志清理需用logrotate自动轮转(如每周、按大小)或自定义shell脚本+crontab精准控制,兼顾保留必要记录与释放空间,并加入预览检查、核心日志保护、远程归档及磁盘水位联动监控。

Linux定时清理日志_自动化清理方案

Linux系统日志长期积累会占用大量磁盘空间,尤其在生产环境中,必须通过自动化方式定期清理,兼顾保留必要历史记录与释放存储资源。

使用logrotate实现智能轮转与清理

logrotate是Linux最常用、最可靠的日志管理工具,支持按大小、时间(天/周/月)、数量等条件自动切割、压缩、删除旧日志。

  • 配置文件通常位于/etc/logrotate.conf,服务级配置放在/etc/logrotate.d/目录下
  • 示例:为/var/log/myapp/*.log设置每周轮转、保留4份、超过100MB立即触发
/var/log/myapp/*.log {     weekly     size 100M     rotate 4     compress     missingok     notifempty     create 644 root root }

配置后无需手动执行,logrotate由cron每日调用(一般在/etc/cron.daily/logrotate中)。

自定义定时脚本配合crontab精准控制

当logrotate无法满足特殊需求(如只删某类错误日志、按关键字过滤清理),可编写Shell脚本+crontab组合方案。

  • 脚本示例(清理30天前的.log.err文件):
#!/bin/bash find /var/log/myapp/ -name "*.log" -o -name "*.err" -mtime +30 -delete # 可追加 du -sh /var/log/myapp/ 发送告警或记录清理日志
  • 赋予执行权限:chmod +x /usr/local/bin/clean_myapp_logs.sh
  • 添加到crontab(每天凌晨2点运行):0 2 * * * /usr/local/bin/clean_myapp_logs.sh

避免误删:关键日志保护与清理前检查

盲目清理可能影响故障排查,建议加入安全机制:

  • /var/log/messages/var/log/secure等系统核心日志,优先用logrotate并设较高保留份数(如rotate 12)
  • 清理脚本中先用find … -print预览将删文件,确认无误后再加-delete
  • 重要业务日志可同步归档到远程NAS或对象存储,再本地清理

监控清理效果与磁盘水位联动

自动化清理应与磁盘使用率联动,防止“清了又满”:

  • 在crontab中增加磁盘检查逻辑,例如:当/var使用率超90%,强制触发一次深度清理
  • 配合df -hdu -sh /var/log/* | sort -hr | head -10定位最大日志源
  • 将清理结果写入/var/log/clean.log,便于审计和排障

text=ZqhQzanResources