var/log/syslog 的大小无限增大

var/log/syslog 的大小无限增大

我的计算机上包含 Ubuntu 的磁盘115GB大小为。

当磁盘已满时114.7GB

我开始删除一些文件以释放一些空间5GB

但是我发现磁盘114GB又满了。我以为是缓存或交换文件的问题,所以没多想,就40GB直接把一些媒体文件移出磁盘,释放了空间。

大约一小时后我收到通知说磁盘又满了! 40GB全部没了!

所以我调试了这个问题,直到/var/log/syslog文件最初肯定小于20GB。我知道这一点是因为/var文件夹在17GB我清除内存之前。

/var/log/syslog文件当前是55.9GB

有人能解释一下这个异常吗?这是一个错误吗?还是我受到了恶意软件或病毒的影响?

答案1

这种无限增长通常是由于重复记录来自同一来源的一个或多个错误而发生的。就我而言,这是由于mon0我用来监控 wifi 流量的 wifi 监控接口不断报告连接错误。有错误报告称,这种溢出发生在各种其他接口(如tun0VPN 等)中。

我已通过清除/var/log/syslog文件解决了我的问题

为了解决这个错误

  1. 你需要找到错误根源并阻止它不会产生任何进一步的日志溢出
  2. 然后清除文件var/log/syslog

你可能会遇到同样的问题

  1. 打不开var/log/syslog由于规模巨大,任何编辑器都必然会崩溃
  2. 无法清除/var/log/syslog再次由于巨大的规模清理也是一个挑战

因此,为了查看导致溢出的错误

tail -f /var/log/syslog

清除用途:

sudo cat /dev/null > /var/log/syslog

答案2

我遇到了类似的问题,我的 syslog 文件有 115GB,syslog.1 有 115G,另外还有多个压缩文件。

第一步找到来源:

watch tail /var/log/syslog

您可能会注意到常见的错误条目;之后;假设您的文件太大;旋转几乎毫无意义。因此,您可以删除所有压缩文件和文件 *.1 以恢复磁盘空间(我的情况是大约 300GB)

第二步截断文件,不要删除(否则你将来可能会遇到很多权限问题),有很多方法,包括:

sudo tee /var/log/syslog </dev/null

您甚至可以先执行第二步,然后继续观察以找到原因,但要确保,如果不这样做,它会再次发生。可能是循环中的某个东西,系统服务是一个不错的起点(例如,某个东西总是快速重启)

答案3

检查/var/lib/logrotate/status并确保它正确旋转。您还需要查看文件的内容,看看是否是系统问题导致不断发出警报。

答案4

步骤1:在位置 /var/log/ 中创建一个脚本文件示例 clearlog.sh,文件权限为“chmod 775 clearlog.sh”

clearlog.sh 文件包含以下内容:

#!/bin/sh
LINECOUNTS=(`cat /var/log/syslog | wc -l`)

if [ $LINECOUNTS -gt "1000" ];
    then
        echo "Recreating syslog file due to lines "$LINECOUNTS" are more than 1000 lines"
        truncate -s 0 /var/log/syslog
        sleep 5
else
        echo "syslog file having line count "$LINECOUNTS" less than 1000}"
fi
/bin/systemctl restart syslog
exit

第2步:编辑位置 /etc/logrotate.d/logs 中的文件,添加 postrotate 部分

/var/log/syslog {
        daily
        rotate 3
        missingok
        copy
        notifempty
        compress
        dateext
        dateformat -%Y%m%d%H%M
        postrotate
                /var/log/clearlog.sh
        endscript
}

要从命令终端测试上述脚本,请执行此 cli 'logrotate -f /etc/logrotate/logs'

相关内容