(此问题处理类似的问题,但它讨论的是旋转的日志文件。)
今天,我收到了有关/var
空间不足的系统消息。
像往常一样,我执行了该行中的命令,该命令sudo apt-get clean
仅稍微改善了场景。然后,我删除了轮换的日志文件,这又没有太大的改进。
经检查,我发现中的某些日志文件/var/log
已经变得非常大。具体来说ls -lSh /var/log
,
total 28G -rw-r----- 1 syslog adm 14G Aug 23 21:56 kern.log -rw-r----- 1 syslog adm 14G Aug 23 21:56 syslog -rw-rw-r-- 1 root utmp 390K Aug 23 21:47 wtmp -rw-r--r-- 1 root root 287K Aug 23 21:42 dpkg.log -rw-rw-r-- 1 root utmp 287K Aug 23 20:43 lastlog
如我们所见,前两个是令人讨厌的。令我如此惊讶的是,为什么没有旋转这么大的文件。
所以我该怎么做?只需删除这些文件,然后重新启动?还是采取一些更审慎的步骤?
我正在使用Ubuntu 14.04。
更新1
首先,该系统仅使用了几个月。硬盘崩溃后几个月,我不得不从头开始安装系统。
现在,按照此答案的建议,我首先使用来检查有问题的日志文件tail
,这并不奇怪。然后,为了进行更深入的检查,我从相同的答案执行了此脚本。
for log in /var/log/{syslog,kern.log}; do
echo "${log} :"
sed -e 's/\[[^]]\+\]//' -e 's/.*[0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\}//' ${log} \
| sort | uniq -c | sort -hr | head -10
done
这个过程花了几个小时。输出在以下行中:
/var/log/syslog : 71209229 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 53929977 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 17280298 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 54763121030042024) <snipped> /var/log/kern.log.1 : 71210257 Rafid-Hamiz-Dell kernel: attempt to access beyond end of device 71209212 Rafid-Hamiz-Dell kernel: sda3: rw=1, want=7638104968240336200, limit=1681522688 1639 Rafid-Hamiz-Dell kernel: EXT4-fs warning (device sda3): ext4_end_bio:317: I/O error -5 writing to inode 6819258 (offset 0 size 4096 starting block 954763121030042024)
(/dev/sda3
是我的主目录。我们可以找到,
lsblk /dev/sda NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 122.1G 0 part / ├─sda2 8:2 0 7.6G 0 part [SWAP] └─sda3 8:3 0 801.8G 0 part /home
为什么一个过程想要超出限制的编写实际上超出了我的理解范围。也许即使在系统更新后,这种情况是否还会继续,我还是想在这个论坛中提出另一个问题。)
然后,从这个答案(您可能想检查一下以获得更深的理解),我执行了,
sudo su -
> kern.log
> syslog
现在,这些文件的大小为零。重启前后系统运行正常。
接下来几天,我将与其他人一起观看这些文件,并在出现
异常情况时向我报告。
最后要注意的是,将两个有问题的文件(kern.log
和syslog
)设置为轮换,以检查显示中的文件(有grep
帮助)
/etc/logrotate.d/
。
更新2
日志文件实际上已轮换。看起来一天就可以达到大尺寸。