文件系统 - 日志文件非常大,应该怎么做?

分享于 

5分钟阅读

ubuntu

  繁體

问题

经过检查,我发现/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
    
    
    
    

    安装软件包后,重置syslogkern.log

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

    希望这个简单的解决方案对其他人有用。



    文件  files  log  log-files  
    相关文章