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

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中)。
经过一段时间的开发,以及内部测试,同程网联盟景区新版程序正式发布推出,感谢广大联盟会员一直以来的支持与关注! 同程网联盟景区新版程序新功能介绍:1.统一的页面风格。页面风格将与随后推出的度假线路、酒店、机票以及融合版联盟程序风格保持一直;2.新增后台管理系统。可更加方便快捷的对网站进行个性化设置;3.动态与伪静态切换。后台操作,简单便捷;4.缓存管理。新增缓存,提高网站访问速度,后台可定期清理;5
自定义定时脚本配合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 -h和du -sh /var/log/* | sort -hr | head -10定位最大日志源
- 将清理结果写入/var/log/clean.log,便于审计和排障









