我的计算机上包含 Ubuntu 的磁盘115GB
大小为。
当磁盘已满时114.7GB
。
我开始删除一些文件以释放一些空间5GB
。
但是我发现磁盘114GB
又满了。我以为是缓存或交换文件的问题,所以没多想,就40GB
直接把一些媒体文件移出磁盘,释放了空间。
大约一小时后我收到通知说磁盘又满了!
40GB
全部没了!
所以我调试了这个问题,直到/var/log/syslog
文件最初肯定小于20GB
。我知道这一点是因为/var
文件夹在17GB
我清除内存之前。
/var/log/syslog
文件当前是55.9GB
!
有人能解释一下这个异常吗?这是一个错误吗?还是我受到了恶意软件或病毒的影响?
答案1
这种无限增长通常是由于重复记录来自同一来源的一个或多个错误而发生的。就我而言,这是由于mon0
我用来监控 wifi 流量的 wifi 监控接口不断报告连接错误。有错误报告称,这种溢出发生在各种其他接口(如tun0
VPN 等)中。
我已通过清除/var/log/syslog
文件解决了我的问题
为了解决这个错误
- 你需要找到错误根源并阻止它不会产生任何进一步的日志溢出
- 然后清除文件
var/log/syslog
你可能会遇到同样的问题
- 打不开
var/log/syslog
:由于规模巨大,任何编辑器都必然会崩溃 - 无法清除
/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'