1. 使用journalctl命令清理systemd日志
journalctl是CentOS 7及以上版本(使用systemd)的核心日志管理工具,可高效清理systemd管理的日志。
journalctl --disk-usage(显示当前日志占用的磁盘空间);journalctl --vacuum-time=7d(保留最近7天的日志,删除更早的日志);journalctl --vacuum-time=2weeks(保留2周日志);journalctl --vacuum-size=100M(限制日志总大小不超过100MB,自动删除旧日志);journalctl --vacuum-by-service=ssh.service(仅清理ssh服务的日志);journalctl --rotate(强制旋转日志文件,将当前日志归档为旧日志)。2. 手动清理/var/log目录下的日志文件
/var/log是CentOS系统日志的主要存储目录,可通过以下命令手动清理:
truncate命令(高效且安全,不会删除文件本身):sudo truncate -s 0 /var/log/messages(清空系统消息日志)、sudo truncate -s 0 /var/log/secure(清空安全认证日志);sudo find /var/log -type f -name "*.log" -exec truncate -s 0 {} \;(清空/var/log下所有.log文件);sudo rm -rf /var/log/*(删除所有日志文件,需提前备份重要日志)。3. 配置logrotate实现自动日志轮转
logrotate是CentOS默认的日志轮转工具,可自动压缩、备份和删除旧日志,避免日志无限增长。
/etc/logrotate.conf(修改全局轮转规则,如daily表示每天轮转、rotate 7表示保留7份旧日志、compress表示压缩旧日志);/etc/logrotate.d/目录下创建服务专属配置文件(如/etc/logrotate.d/nginx),示例内容:/var/log/nginx/*.log { daily missingok rotate 7 compress delaycompress notifempty create 0640 root adm }(每日轮转Nginx日志,保留7份,压缩旧日志,空日志不轮转,创建新日志时设置权限和所有者);sudo logrotate -f /etc/logrotate.d/nginx(强制运行轮转,验证配置是否正确);tail -f /var/log/messages(监控logrotate的操作记录)。4. 设置定时任务自动清理
通过cron定时任务定期执行清理操作,避免手动维护。
sudo crontab -e(打开当前用户的crontab文件);0 3 * * * find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;(-mtime +7表示7天前修改的文件);Ctrl+X→Y→Enter保存,cron会自动加载新任务。注意事项
cp /var/log/messages /var/log/messages.bak),避免误删导致问题排查困难;/var/lib/docker/containers/*/*.log路径清理,或配置Docker日志驱动限制大小。