CentOS 日志清理策略
策略总览
systemd journal 日志策略
journalctl --disk-usagejournalctl --vacuum-time=7d(保留最近 7 天)journalctl --vacuum-size=500M(最大保留 500MB)/etc/systemd/journald.conf.d/limits.conf[Journal]SystemMaxUse=1GRuntimeMaxUse=500Msystemctl restart systemd-journaldrm -rf /var/log/journal/*;如需手工回收,先触发一次日志轮转:systemctl kill --kill-who=main --signal=SIGUSR2 systemd-journald.service,再执行 journalctl --vacuum-* 清理。传统文本日志与 logrotate 策略
/etc/logrotate.conf;应用配置:/etc/logrotate.d/*daily 或 weeklyrotate 14(保留 14 个归档)compress(节省空间)missingok、notifemptycreate 0640 root admpostrotate /bin/systemctl reload rsyslog.service >/dev/null 2>&1(按实际服务调整)size 100M(达到 100MB 即轮转)logrotate -d /etc/logrotate.d/myapp(不真正执行,检查规则)logrotate -f /etc/logrotate.d/myapp(立即执行一次)/var/log/nginx/*.log { daily; rotate 14; compress; missingok; notifempty; create 0644 nginx nginx; sharedscripts; postrotate /bin/kill -USR1 \cat /run/nginx.pid 2>/dev/null` || true; endscript }`copytruncate 可在不停服务的情况下清空原文件,但存在极小概率丢日志的风险,优先选择“reload/USR1 通知应用重开日志文件”。按时间清理与临时文件
find /var/log -type f -name "*.gz" -mtime +30 -delete(删除 30 天前的压缩日志).gz、.old),避免对正在写入的 .log 直接 rm 或 > 清空tmpwatch --mtime 48 /tmp /var/tmp(清理 48 小时未访问的临时文件)yum clean allpackage-cleanup --oldkernels --count=2(保留最近 2 个内核,操作前用 uname -r 确认当前内核)自动化与监控落地
/etc/cron.d/ 添加任务或放入 /etc/cron.hourly|daily|weekly|monthly 目录df -hT、du -h /var/log --max-depth=1 | sort -hr | head -n20logrotate -d 预演,再 logrotate -f 强制一次,确认轮转、压缩、清理与通知动作均符合预期。