You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04系统syslog与kern.log过大致磁盘告警问题咨询

Ubuntu 20.04下/var/log中syslog和kern.log暴增的原因及安全处理方案

嘿,碰到过好几次这种日志爆盘的情况,来给你理清楚前因后果和安全的处理方式~

一、日志文件疯长的常见原因

  • 进程/服务持续报错循环:这是最常见的情况——比如某个系统服务(像network-manager、systemd的子进程)或者自定义脚本出了问题,反复抛出错误、警告信息,syslog会一直记录这些内容。举个例子,网卡驱动兼容性差,每次网络重连就刷几百行日志;或者某个定时脚本逻辑错误,每分钟输出几十条报错,日积月累就会撑满磁盘。
  • 内核级硬件/模块异常:kern.log是内核的日志输出,如果你的硬件(磁盘、内存、显卡之类)有故障,或者内核模块加载失败、频繁触发调试逻辑,内核会不断打印日志。比如磁盘出现坏道导致I/O错误,内核会反复记录这个异常;或者某个内核版本和你的硬件不兼容,启动后一直输出调试信息。
  • 日志轮转工具罢工:Ubuntu默认用logrotate自动切割、压缩旧日志,如果/etc/logrotate.d/rsyslog这个配置文件被修改过,或者logrotate进程权限不足、运行失败,日志就会一直写入同一个文件,不会自动归档,时间久了自然就涨到几十上百G。

二、直接删除日志文件是否安全?

直接删不推荐!原因有两个:

  1. 如果rsyslogd(负责写日志的进程)还在持有这个文件的句柄,你删除文件后磁盘空间不会立刻释放——系统会认为这个文件还被进程占用,直到你重启rsyslog服务或者服务器。
  2. 直接删除可能导致rsyslog进程无法继续写入日志,甚至崩溃,影响系统日志的正常记录。

安全的处理方式

  • 清空日志内容而非删除文件:用这个命令直接把文件大小置为0,既释放空间又不打断进程写入:
    sudo truncate -s 0 /var/log/syslog
    sudo truncate -s 0 /var/log/kern.log
    
  • 重启日志服务确保正常写入:清空后可以重启rsyslog让它重新关联文件:
    sudo systemctl restart rsyslog
    
  • 修复日志轮转配置:检查/etc/logrotate.d/rsyslog的配置,确保里面有类似这样的规则(比如每天轮转、保留7份旧日志、压缩旧文件):
    /var/log/syslog
    /var/log/kern.log
    {
            rotate 7
            daily
            missingok
            notifempty
            delaycompress
            compress
            postrotate
                    /usr/lib/rsyslog/rsyslog-rotate
            endscript
    }
    
    然后手动执行一次轮转测试,确保工具正常工作:
    sudo logrotate -f /etc/logrotate.d/rsyslog
    

三、后续排查建议(从根源解决问题)

  • 先看日志找报错源头:用tail -n 2000 /var/log/syslog或者dmesg | tail -n 1000看看最近的日志内容,找那些重复出现的错误信息,定位是哪个服务或硬件出了问题。
  • 检查硬件健康状态:如果kern.log暴增,优先排查硬件——用smartctl -a /dev/sda(替换成你的磁盘设备名)检查磁盘SMART信息,排除坏道;用memtest86+测试内存,看是否有内存故障。
  • 优化日志级别减少冗余:如果是某些服务日志太啰嗦,可以修改rsyslog的配置,把不必要的日志级别(比如debug级)过滤掉,减少日志写入量。

内容的提问来源于stack exchange,提问作者chai_and_kaapi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 20:37:28