Çok büyük günlük dosyaları, ne yapmalıyım?


36

( Bu soru benzer bir konuyla ilgilenir, ancak döndürülmüş bir günlük dosyası hakkında konuşur.)

Bugün çok az /varyerle ilgili bir sistem mesajı aldım .

Her zamanki gibi komutları sudo apt-get clean, senaryoyu sadece biraz iyileştiren bir çizgi üzerinde yürüttüm. Sonra yine çok az iyileştirme sağlayan döndürülmüş log dosyalarını sildim.

Muayenede bazı kütük dosyalarının /var/logçok büyük olduklarını gördüm . Spesifik olmak, ls -lSh /var/logverir,

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

Gördüğümüz gibi, ilk ikisi rahatsız edici olanlardır. Neden bu kadar büyük dosyaların döndürülmediğine şaşırdım.

Peki ne yapmalıyım? Basitçe bu dosyaları silin ve sonra yeniden başlatın? Ya da biraz daha ihtiyatlı adımlar için gitmek?

Ubuntu 14.04 kullanıyorum.

GÜNCELLEME 1

Başlamak için, sistem sadece birkaç aylık. Sabit disk arızasından birkaç ay sonra sistemi sıfırdan kurmak zorunda kaldım.

Şimdi, bu cevabın önerdiği gibi , ilk önce rahatsız edici log dosyalarını kullanarak tailsürpriz yapmadan kontrol ettim . Sonra, daha derin bir inceleme için, bu betiği aynı cevapta yürüttüm .

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

İşlem birkaç saat sürdü. Çıktı, doğrultusunda idi

/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/sda3benim ev dizinim. bulabildiğimiz gibi,

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

Neden bir işlemin sınırın ötesine yazmak isteyeceği aslında benim anlama alanımın dışında. Belki bu sistem güncellemesinden sonra da devam ederse bu forumda farklı bir soru sormak isteyeceğim.)

Ardından gelen bu cevap (eğer kontrol etmek isteyebilir bu daha derin bir anlayış için), ben, idam

sudo su -
> kern.log
> syslog

Şimdi, bu dosyaların sıfır boyutları var. Sistem yeniden başlatmadan önce ve sonra çalışıyor.

Önümüzdeki birkaç gün içinde bu dosyaları (diğerleriyle birlikte) izleyeceğim ve işlem dışı
kalmaları durumunda rapor vereceğim .

Son bir not olarak, hem hakaret eden dosyaların ( kern.logve syslog) her ikisi de, grepiçerideki dosyaların ( yardım edilenlerin) incelemesi gibi döndürülmek üzere ayarlanmıştır /etc/logrotate.d/.

GÜNCELLEME 2

Günlük dosyaları aslında döndürülür. Görünüşe göre büyük bedenler bir günde elde edildi.


2
Bu günlük dosyalarında neden bu kadar büyük olduklarına dair bir ipucu veren bir şey var mı? Sil ve yeniden başlat, sonra bazı üstel bir şekilde büyüyüp büyümediklerini görmek için onları izleyin.
douggro

@douggro Gerçekten de var. Lütfen soru güncellememe bakın.
Masroor

Yanıtlar:


43

Basitçe bu dosyaları silin ve sonra yeniden başlatın?

Hayır. Onları boşaltın, ancak kullanmayın rmçünkü touchyeniden yaratma komutunu yazarken bir şeyin çökmesine neden olabilir .

En kısa yöntem:

cd /var/log
sudo su
> lastlog
> wtmp
> dpkg.log 
> kern.log
> syslog
exit

Kök değilse, gerekli olacaktır sudo. AU bir başka cevabından alınmıştır .

Bunu yapmadan önce. Bir yapmak tail {logfile}ve çok büyük olmaları için bir neden olup olmadığını kontrol edin. Bu sistem birkaç yıllık değilse, bunun için hiçbir sebep olmamalıdır ve sorunu çözmek, bunun devam etmesine izin vermekten daha iyidir.

Hem kern.log hem de syslog normalde bu kadar büyük olmamalıdır. Ancak dediğim gibi: eğer bu sistem yıllarca çalışıyorsa ve yıllarca çalışıyorsa normal olabilir ve dosyaların temizlenmesi gerekir.

Gelecekte o kadar büyük olmasını engellemek için: kurulum logrotate. Oldukça basittir ve belirlediğiniz boyuttan sonra büyüdüğünde log dosyasını sıkıştırır.


1 başka şey: Eğer içeriği silmek istemiyorsanız, dosyaları katlanarak veya gzipleyerek sıkıştırabilirsiniz. Bu, şimdi olduğundan büyük olasılıkla% 10'luk dosyalarla bitecek. Tabi, diskte hala bunu yapacak yer varsa.


3
wtmp: Command not foundBu hangi paket?
Janus Troelsen

/ var / log / wtmp bir komut değil günlük dosyasıdır. Benim cevabım nerede wtmp çalıştırabilir durumda? ;-)
Rinzwind

3
>Bir istemi olduğunu düşündüm ve "lastlog" u denedim ve çalıştı, bu yüzden doğru anladığımı sandım: P
Janus Troelsen

Bu sorun bana sürekli devam ediyor. Ubuntu 16.04 kullanıyorum. Bu dersin neye benzediğini söyler misin? Şimdiden teşekkürler!
Gayan

4
Bu cevap lastlog, wtmp, dpkg.log, kern.log ve syslog ile yapmanız gerekenleri yeterince açıklamıyor.
Tor Klingberg

20

Ya sadece görsel olarak kullanarak bunları inceleyerek - O günlüğü (ler) dolduruyor kurmaya çalışıyor değer demektir lessya tailkomutunu

tail -n 100 /var/log/syslog

veya rahatsız edici çizgiler, ne olduğunu kolayca göremeyecek kadar derine gömülmüşse,

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

(not: bu, büyük dosyalar verildiğinde biraz zaman alabilir), bu zaman damgalarını çıkarmaya ve en sık meydana gelen mesajları saymaya çalışır.


10

Temiz sistem günlük dosyaları için benim yöntem budur. Adım 1 ve 2 isteğe bağlıdır, ancak bazen eski günlükleri kontrol etmeniz gerekir ve bazen de yararlı olur. ;-)

  1. İsteğe bağlı: Günlük dosyasını kopyala

    cp -av --backup=numbered file.log file.log.old
    
  2. İsteğe bağlı: log kopyasında Gzip kullanın

    gzip file.log.old
    
  3. Temiz dosya için / dev / null kullanın.

    cat /dev/null > file.log
    

Ve biz bu günlükler için kullanıyoruz (sadece birkaç sunucuda) logrotate ve haftalık * .1 (veya sonraki döndürülmüş) olan tüm dosyaların gzip tarafından sıkıştırıldığı cron betiği ile çalıştırılıyor.


1
Ubuntu 18.04'te devam etmenin yolu budur.
Luís de Sousa,

Bu kabul edilen cevap olmalı. Tomruklar hızlı bir şekilde bu şekilde doldururken (logrotate'e rağmen) bir şeyler doğal olarak yanlıştır ve daha derine
inmeye

4

Bugün Ubuntu 16.04'ü yükledim ve aynı sorunu fark ettim. Ancak, bunu busybox-syslogd ile düzelttim. Evet! Bu paketi yeni kurdum ve problem çözüldü. :)

$ sudo apt-get install busybox-syslogd

Bu paketi yükledikten sonra sıfırlayın syslogve kern.log:

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

Umarım bu basit çözüm etrafınızdaki diğer insanlar için faydalıdır.


3
Bu paket tam olarak ne yapıyor ve bu çözüm nasıl çalışıyor?
Aaron Franke

Bu yazıdan şüpheliyim, çünkü bu dosyalar bir günde büyük büyüme şansı bulamadı. Bu yüzden diğerlerinden bu program hakkında bir şeyler duyana kadar uzak duracağım.
SDsolar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.