Linux altında günlük dosyalarını temizleme


10

Bir çekirdek modülünün bazı özelliklerini test etmek için bir kvm ubuntu 10.04 sanal makine kullanıyorum. /var/logBu modülle ilgili çekirdek mesajlarını gözlemlemek için dosyaları karıştırıyorum.

Temiz bir durumdan başlamak için rm -rf /var/log/*, sanal makineyi çalıştırıp yeniden başlatarak eski iletileri içeren günlük dosyalarını kaldırırım . Ancak, yeniden başlattıktan sonra yeni günlük dosyaları hala bu eski günlük iletilerini içerir. Sonunda bu günlük dosyası mesajlarından kurtulmak için dosyaları silmek ve sanal makineyi yeniden başlatmak yaklaşık 5-6 döngü sürer.

Bu neden oluyor? Günlük dosyalarını temizlemenin daha kolay bir yolu var mı?


logrotategünlükleri otomatik olarak silme ve döndürme ile ilgili resmi linux yazılımıdır.
Hanan N.

Döndürmek istemedim. Sadece silin.
contemplatingzombie

1
Aşağıdaki benim için çalışıyor gibi görünüyor: 1. rm -rf / var / log / * 2. dmesg -c 3. reboot Bu işe yaradığından, çekirdeğin önyükleme sırasında önceki günlük iletilerini okuduğunu, arabellekte tuttuğunu ve yazdığını düşünüyorum yeniden başlatma sırasında dosyalara bir kez daha. Gerçek mekanizma hakkında daha fazla bilgi sahibi olan varsa, lütfen güncelleyin.
contemplatingzombie

Yanıtlar:


7

Eski günlükleri temizlemenin en kolay yolu onları kaldırmak değildir.

Günlükleri temizlemenin en iyi yolu logrotateHanan N.

find /var/log -type f -exec /bin/cp /dev/null {} \;

günlük dosyalarının her biri için. Bir önceki önyüklemeden hangi günlük girişlerine atıfta bulunduğunuzu tam olarak bilmiyorum, ancak önyüklemeden sonra bunun temizlenmesini istiyorsanız, komutun içine yukarıdaki komutu koyabilirsiniz, /etc/rc.localböylece tüm günlükler önyüklemeden sonra içindir.

Normalde tüm sorun giderme işlemlerinde başlangıç ​​noktanız olduğu için günlükleri temizlemek istemezsiniz.


Bence 'cp' komutu tüm günlükleri son genişletilmiş dosya adı üzerine kopyalar ... belki de bunu find /var/log/* -exec cp /dev/null {} \;mu demek istediniz ?
jjmontes

@jjmontes Teşekkür ederim. O zaman find komutunu bulamadım. :) Ama aslında düzenlediğim şekilde değiştirilecek
Karlson

3

Yaptığınız şey için, çekirdek iletileri için ek bir günlük dosyası eklemek daha iyi olabilir. Bazı günlük cinleri, yazdığınız kayıtlarda eşleşme gerçekleştirmenize izin verir, böylece yalnızca dosyanızdaki uygun kayıtları elde edersiniz. Daha sonra dosyaları işlemler arasında döndürebilir, silebilir veya yeniden adlandırabilirsiniz. (Yeniden başlatmazsanız, günlük arka plan programına dosyalarını yeniden açmak için bir HUP sinyali göndermeniz gerekebilir.

Günlükten yalnızca yeni kayıtları çıkaracak araçlar da vardır. logtailDan programı logcheckpaketi böyle bir araçtır. Alternatif bir ofset dosyası ile çalıştırılabilir.

Bir kalıpla eşleşen ve bunları raporlayan kayıtların günlüklerini izleyen başka araçlar da vardır. Bunlardan biri sizin için iyi olabilir.


1

Bu, günlüklerinizi temiz bir günlüğe döndürüp ardından eski günlük girişlerini silerek iyi çalışır (Ubuntu LTS 14.04'te). Cp / dev / null yöntemine benzer, ancak daha temiz olduğunu düşünüyorum. YMMV

logrotate --force /etc/logrotate.conf
find /var/log/ -name '*[0-5]*' -exec rm {} \;
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.