问题
经过检查,我发现/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.
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
答案1
最简单的方法:
cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log
> kern.log
> syslog
exit
如果磁盘里还有空间做这个。
答案2
尝试tail
命令直观地检查它们,看看日志的内容。
tail -n 100 /var/log/syslog
for log in /var/log/{dmesg,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
答案3
我清理系统日志文件的方法是,步骤1和步骤2是可选的,但是有时需要检查旧日志和备份有时很有用,;- )
可选:复制日志文件
cp -av --backup=numbered file.log file.log.old
可选:在日志副本上使用Gzip
gzip file.log.old
使用/dev/null清除文件
cat /dev/null > file.log
答案4
我今天安装了Ubuntu 16.04,有同样的问题,但我用busybox-syslogd解决了这个问题,: )
$ sudo apt-get install busybox-syslogd
安装软件包后,重置syslog
和kern.log
:
sudo tee /var/log/syslog /var/log/kern.log </dev/null
希望这个简单的解决方案对其他人有用。
相关文章