1. 使用journalctl命令清理(推荐)
journalctl是systemd的日志管理工具,可高效清理systemd-journald生成的日志(默认存储路径:/var/log/journal/)。
journalctl --disk-usage(显示日志总大小,如“1.2G”)。journalctl --vacuum-time=1week(删除1周前的所有日志);journalctl --vacuum-time=3d(更短周期清理,适合频繁清理场景)。journalctl --vacuum-size=100M(自动删除超出大小的旧日志,适合固定存储限制)。ssh.service的日志:journalctl --vacuum-time=1week --unit=ssh.service;ubuntu的日志:journalctl --vacuum-time=1week --user=ubuntu(避免影响系统级日志)。2. 手动清理/var/log目录下的日志文件
/var/log是CentOS系统日志的主要存储目录,包含messages(系统综合日志)、secure(安全认证日志)、maillog(邮件服务日志)等关键文件。
messages为例):sudo cp /var/log/messages /var/log/messages.bak # 备份原日志 sudo cat /dev/null > /var/log/messages # 清空文件内容(保留文件结构) sudo sh -c 'cat /dev/null > /var/log/messages; cat /dev/null > /var/log/secure; cat /dev/null > /var/log/maillog; cat /dev/null > /var/log/cron; cat /dev/null > /var/log/boot.log' systemctl restart rsyslog)。3. 配置logrotate自动轮转日志
logrotate是CentOS默认的日志轮转工具,可实现“定期压缩、删除旧日志”的自动化管理,避免日志文件无限增长。
/etc/logrotate.conf):sudo vi /etc/logrotate.conf 关键参数说明(取消注释并调整): rotate 7:保留最近7个日志文件;compress:压缩旧日志(节省空间);missingok:日志文件不存在时不报错;notifempty:日志为空时不轮转。rsyslog为例,编辑/etc/logrotate.d/rsyslog):sudo vi /etc/logrotate.d/rsyslog 示例配置(每天轮转,保留7天,压缩):/var/log/messages { daily rotate 7 compress missingok notifempty create 640 root adm # 轮转后创建新文件,权限640,属主root,属组adm } sudo logrotate -f /etc/logrotate.conf # 强制立即轮转 4. 设置定时任务自动清理
通过cron定时运行清理脚本,实现“无人值守”的日志管理(如每天凌晨3点清理30天前的.log文件)。
/usr/local/bin/log_cleanup.sh):sudo vi /usr/local/bin/log_cleanup.sh 脚本内容(清理/var/log下30天未修改的.log文件):#!/bin/bash find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \; sudo chmod +x /usr/local/bin/log_cleanup.sh crontab):sudo crontab -e 添加以下行(每天凌晨3点执行脚本):0 3 * * * /usr/local/bin/log_cleanup.sh 注意事项
root权限(使用sudo);/var/log/messages.bak);df -h检查磁盘使用情况,及时调整清理策略。