在 Linux 系统中,日志文件过大是常见问题,通常可以通过以下几类方式处理:临时清理、长期管控、自动化运维。下面按实用场景给你一个完整思路。
du -sh /var/log/*
或找整个系统的大日志:
find /var/log -type f -size +100M
/var/log/messages/var/log/syslog/var/log/journal/(systemd 日志)/var/log/nginx/、/var/log/httpd/> /var/log/large.log
或
truncate -s 0 /var/log/large.log
适合正在被进程占用的日志
rm -f /var/log/xxx.log-20230101.gz
journalctl --disk-usage
journalctl --vacuum-size=500M
journalctl --vacuum-time=7d
大多数 Linux 已内置 logrotate
示例(/etc/logrotate.d/nginx):
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
systemctl reload nginx
endscript
}
手动测试:
logrotate -d /etc/logrotate.conf
logrotate -f /etc/logrotate.conf
编辑:
/etc/systemd/journald.conf
SystemMaxUse=500M
SystemKeepFree=1G
MaxRetentionSec=7day
重启:
systemctl restart systemd-journald
debug 模式长期运行{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
0 3 * * * find /var/log -name "*.log" -mtime +30 -delete
df -hrm 正在写入的日志(空间不释放)truncate 或 logrotate如果你愿意,可以告诉我:
我可以帮你写一套定制化的 logrotate 配置或清理脚本。