File log yang sangat besar, apa yang harus saya lakukan?

36

( Pertanyaan ini berkaitan dengan masalah yang serupa, tetapi ini berbicara tentang file log yang diputar.)

Hari ini saya mendapat pesan sistem tentang /varruang yang sangat rendah .

Seperti biasa saya mengeksekusi perintah-perintah di baris sudo apt-get cleanyang memperbaiki skenario hanya sedikit. Kemudian saya menghapus file log yang diputar yang sekali lagi memberikan sedikit peningkatan.

Setelah memeriksa saya menemukan bahwa beberapa file log di /var/logtelah tumbuh menjadi yang sangat besar. Untuk lebih spesifik, ls -lSh /var/logberikan,

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

Seperti yang bisa kita lihat, dua yang pertama adalah yang menyinggung. Saya sedikit terkejut mengapa file besar seperti itu belum diputar.

Jadi apa yang harus aku lakukan? Hapus saja file-file ini lalu reboot? Atau pergi untuk beberapa langkah yang lebih bijaksana?

Saya menggunakan Ubuntu 14.04.

PEMBARUAN 1

Untuk memulainya, sistem baru berumur beberapa bulan. Saya harus menginstal sistem dari awal beberapa bulan yang lalu setelah crash hard disk.

Sekarang, seperti yang disarankan dalam jawaban ini , saya pertama kali memeriksa file log yang menyinggung menggunakan tail, tidak mengherankan di sana. Kemudian, untuk pemeriksaan lebih dalam, saya menjalankan skrip ini dari jawaban yang sama .

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

Prosesnya memakan waktu beberapa jam. Outputnya berada di garis,

/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/sda3adalah direktori home saya. Seperti yang dapat kita temukan,

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

Mengapa suatu proses ingin menulis di luar batas sebenarnya di luar ruang lingkup pemahaman saya. Mungkin saya ingin mengajukan pertanyaan berbeda di forum ini jika ini berlanjut bahkan setelah pembaruan sistem.)

Kemudian, dari jawaban ini (Anda mungkin ingin memeriksa ini untuk pemahaman yang lebih dalam), saya mengeksekusi,

sudo su -
> kern.log
> syslog

Sekarang, file-file ini memiliki ukuran nol. Sistem berjalan dengan baik sebelum dan sesudah reboot.

Saya akan menonton file-file ini (bersama dengan orang lain) dalam beberapa hari ke depan dan melaporkan kembali jika
mereka berperilaku out-of-line.

Sebagai catatan akhir, kedua file yang menyinggung ( kern.logdan syslog), diatur untuk diputar, seperti pemeriksaan file ( grepdibantu) di dalam /etc/logrotate.d/acara.

PEMBARUAN 2

File log sebenarnya diputar. Sepertinya ukuran besar tercapai pada satu hari.

Masroor
sumber
2
Apakah ada sesuatu di file-file log yang memberikan petunjuk mengapa mereka begitu besar? Hapus dan reboot, kemudian pantau mereka untuk melihat apakah mereka tumbuh secara eksponensial.
douggro
@douggro Memang ada. Silakan lihat pembaruan saya untuk pertanyaan.
Masroor

Jawaban:

43

Hapus saja file-file ini lalu reboot?

Kosongkan mereka tetapi jangan gunakan rmkarena itu bisa berakhir menabrak sesuatu saat Anda mengetik touchperintah untuk membuatnya kembali.

Metode terpendek:

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

Jika tidak melakukan root maka akan diperlukan sudo. Diambil dari jawaban lain pada AU.

SEBELUM ANDA MELAKUKANNYA. Lakukan tail {logfile}dan periksa apakah ada alasan bagi mereka untuk menjadi begitu besar. Kecuali jika sistem ini berumur beberapa tahun, tidak ada alasan untuk hal ini dan memperbaiki masalahnya lebih baik daripada membiarkannya terus berjalan.

Baik kern.log dan syslog biasanya tidak sebesar itu. Tapi seperti yang saya katakan: jika sistem ini berjalan dan berjalan selama bertahun-tahun mungkin normal dan file hanya perlu dibersihkan.

Dan untuk mencegahnya menjadi sebesar itu di masa depan: pengaturan logrotate. Ini cukup mudah dan akan memampatkan file log ketika menjadi lebih besar dari ukuran yang Anda tetapkan.


1 hal lain: jika Anda tidak ingin menghapus konten Anda dapat mengompres file dengan tarring atau gzipping. Itu akan membuat Anda berakhir dengan file mungkin 10% dari apa yang sekarang. Itu jika masih ada ruang pada disk untuk melakukan itu.

Rinzwind
sumber
3
wtmp: Command not foundPaket mana ini?
Janus Troelsen
/ var / log / wtmp bukan perintah tetapi file log. Di mana jawaban saya menyatakan Anda dapat menjalankan wtmp? ;-)
Rinzwind
3
Saya pikir >adalah prompt dan mencoba "lastlog" dan itu berhasil, jadi saya berasumsi bahwa saya mengerti dengan benar: P
Janus Troelsen
Masalah ini terus terjadi pada saya. Saya menggunakan ubuntu 16.04. Bisakah Anda memberi tahu apa yang tampak seperti ini. Terima kasih sebelumnya!
Gayan
4
Jawaban ini tidak cukup menggambarkan apa yang seharusnya Anda lakukan dengan lastlog, wtmp, dpkg.log, kern.log dan syslog.
Tor Klingberg
20

Mungkin patut untuk mencoba membuat apa yang mengisi log - baik dengan hanya memeriksanya secara visual menggunakan perintah lessatautail

tail -n 100 /var/log/syslog

atau jika garis yang menyinggung terlalu dalam terkubur untuk dengan mudah melihat apa yang terjadi, sesuatu seperti

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

(catatan: ini mungkin memakan waktu, mengingat file besar seperti itu) yang akan berusaha untuk menghilangkan cap waktu dan kemudian menghitung pesan yang paling sering terjadi.

Steeldriver
sumber
10

Metode saya untuk membersihkan file log sistem adalah ini. Langkah 1 dan 2 adalah opsional, tetapi kadang-kadang Anda perlu memeriksa log yang lebih lama dan cadangan kadang-kadang berguna. ;-)

  1. Opsional: Salin file log

    cp -av --backup=numbered file.log file.log.old
    
  2. Opsional: Gunakan Gzip pada salinan log

    gzip file.log.old
    
  3. Gunakan / dev / null untuk membersihkan file

    cat /dev/null > file.log
    

Dan kami menggunakan log ini (hanya pada beberapa server) logrotate dan mingguan dijalankan dengan skrip cron yang semua file dengan * .1 (atau diputar berikutnya) dikompres oleh gzip.

zorbon.cz
sumber
1
Ini adalah cara untuk menggunakan Ubuntu 18.04.
Luís de Sousa
Ini harus menjadi jawaban yang diterima. Ketika batang kayu terisi dengan cepat seperti itu (meskipun logrotate) ada sesuatu yang salah dan layak untuk digali lebih dalam
Sudip Bhandari
4

Saya menginstal Ubuntu 16.04 hari ini dan saya melihat masalah yang sama. Namun, saya memperbaikinya dengan busybox-syslogd. Ya! Saya baru saja menginstal paket itu dan masalah telah diselesaikan. :)

$ sudo apt-get install busybox-syslogd

Setelah menginstal paket itu, reset syslogdan kern.log:

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

Saya harap solusi sederhana ini bermanfaat bagi orang lain di sekitarnya.

menguasai
sumber
3
Apa, tepatnya, yang dilakukan paket ini, dan bagaimana cara kerja solusi ini?
Aaron Franke
Saya meragukan pos ini karena file-file itu tidak akan memiliki kesempatan untuk tumbuh besar dalam satu hari. Jadi saya akan menunda sampai saya mendengar dari orang lain tentang program ini.
SDsolar