Linux系统日志文件过大通常由以下原因导致: - 日志轮转配置不当 - 应用程序持续产生大量日志 - 系统异常导致重复错误日志 - 旧日志未及时清理
logrotate是Linux自带的日志管理工具,可自动压缩、轮转和删除旧日志。
配置示例(通常位于/etc/logrotate.conf
或/etc/logrotate.d/
目录下):
/var/log/example.log {
daily # 每天轮转
rotate 7 # 保留7个备份
compress # 压缩旧日志
delaycompress # 延迟一天压缩
missingok # 如果日志丢失不报错
notifempty # 空日志不轮转
size 100M # 超过100MB就轮转
create 0644 root root # 创建新日志文件的权限
}
手动执行轮转:
logrotate -vf /etc/logrotate.conf
对于已经过大的日志文件:
# 清空日志文件(保留文件描述符)
> /var/log/large.log
# 或者备份后删除
mv /var/log/large.log /var/log/large.log.bak
touch /var/log/large.log
对于systemd系统:
# 查看日志大小
journalctl --disk-usage
# 限制日志大小
sudo journalctl --vacuum-size=200M
# 限制日志保留时间
sudo journalctl --vacuum-time=7d
# 查找大于100MB的日志文件
find /var/log -type f -name "*.log" -size +100M -exec ls -lh {} \;
# 按大小排序日志目录
du -ah /var/log | sort -rh | head -n 20
对于特定应用程序,可以降低日志级别减少日志量: - 修改配置文件中的日志级别(如从DEBUG改为INFO) - 限制单个日志文件大小
# 添加定时任务
crontab -e
# 示例:每周日凌晨3点清理旧日志
0 3 * * 0 find /var/log -type f -name "*.gz" -mtime +30 -delete
对于不重要的临时日志:
# 在/etc/fstab中添加
tmpfs /var/log/application tmpfs size=100M,noatime 0 0
通过以上方法,可以有效管理和控制Linux系统中的日志文件大小,避免磁盘空间被日志文件占满的问题。