CentOS系统日志清理技巧(适用于Dopra或其他应用)
journalctl是CentOS 7及以上版本默认的日志管理工具,可高效管理systemd生成的日志。
--vacuum-time参数设置保留时间(如保留1周日志),或用--vacuum-size限制日志文件总大小(如保留500MB)。示例:sudo journalctl --vacuum-time=1w # 删除1周前的所有日志
sudo journalctl --vacuum-size=500M # 限制日志总大小为500MB
--unit参数指定服务名称(如sshd、httpd),仅清理该服务的日志。示例:sudo journalctl --vacuum-time=2weeks --unit=sshd # 删除sshd服务2周前的日志
--user参数指定用户名,清理该用户的日志。示例:sudo journalctl --vacuum-time=2weeks --user=username # 删除username用户2周前的日志
logrotate是CentOS默认的日志轮转工具,可自动压缩、备份和删除旧日志,避免日志文件无限增长。
/etc/logrotate.conf,应用特定配置存放在/etc/logrotate.d/目录下(如rsyslog、nginx等)。/var/log/myapp.log创建轮转规则(保留7天日志,压缩旧日志,创建新文件权限为640):sudo nano /etc/logrotate.d/myapp
输入以下内容:/var/log/myapp.log {
daily # 每天轮转
rotate 7 # 保留7个旧日志
compress # 压缩旧日志(如.gz格式)
missingok # 日志文件丢失时不报错
notifempty # 日志为空时不轮转
create 640 root adm # 创建新日志文件,权限640,属主root,属组adm
}
-f参数强制立即轮转(即使未达到条件):sudo logrotate -f /etc/logrotate.conf
若需快速释放空间,可手动删除指定日志文件(需谨慎操作,避免删除系统关键日志)。
ls -l /var/log查看目录下的日志文件及大小。sudo rm -rf /var/log/* # 删除/var/log下所有文件和子目录(确保无重要日志)
sudo rm /var/log/messages # 删除系统一般日志
sudo rm /var/log/secure # 删除安全相关日志
通过cron定时任务定期执行清理脚本,避免手动操作。
/var/log下超过7天的.log文件:sudo nano /usr/local/bin/clean_logs.sh
输入以下内容:#!/bin/bash
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
sudo chmod +x /usr/local/bin/clean_logs.sh
crontab -e),添加以下行(每天凌晨2点执行):0 2 * * * /usr/local/bin/clean_logs.sh
/var/log/messages、/var/log/secure等系统关键日志不要随意删除。--debug参数测试(如journalctl --vacuum-time=1w --debug),避免配置错误导致日志丢失。df -h定期检查磁盘空间使用情况,及时调整清理策略。