Find ile günlük filtreleme: pratik yaklaşım ve örnekler

0 Yanıt 8 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
find ile günlük filtreleme: pratik yaklaşım ve örnekler

Günlük dosyalarını hızlıca bulmak veya belirli koşullara göre listelemek, sistem yöneticileri ve geliştiriciler için sık karşılaşılan bir görevdir. Özellikle log dizinlerinde zamanla büyüyen dosyaları hariç tutmak veya sadece son 24 saat içinde değiştirilmiş dosyaları izlemek için find komutunun sunduğu esneklik önemlidir. Aşağıda işin ana hatlarını, somut örneklerle adım adım ele alıyorum.

  • Temel zaman bazlı filtreler: -mtime, -ctime, -atime
    • -mtime n: Dosyanın son değiştirilme zamanı n gün önce şeklinde
    • -mtime +n: n günden daha eski
    • -mtime -n: son n gün içinde değişen

    Bu filtreler günlükleri hedef alırken sıklıkla kullanılır. Örneğin son 1 gün içinde değiştirilmiş günlükleri bulmak için:
    KOD
    1find /var/log -type f -mtime -1 -print

  • Dosya tipi ve isim tabanlı filtreler
    • -type f sadece dosyalar
    • -name '*.log' belirli uzantılı dosyalar
    • -iname '*.log' büyük/küçük harfe duyarsız

    Birleşik kullanım örneği:
    KOD
    1find /var/log -type f -iname '*.log' -mtime -2 -print

  • Sınırlandırılmış aralık ve eşleşmeler
    • -newer référence_file ile karşılaştırma
    • -size +1M gibi boyut filtreleri

    Logları boyutuna göre incelemek için:
    KOD
    1find /var/log -type f -name '*.log' -size +5M -mtime -7 -print

  • İşlevsel işlemlerle birleşim
    • -exec komutu ile bulunduğu yere özel işlem

    Örneğin 7 gün önce oluşturulmuş log dosyalarını arayıp silmek (dikkatli kullanım):
    KOD
    1find /var/log -type f -name '*.log' -mtime +7 -exec rm -f {} \;

  • Performans ve güvenlik ipuçları
    • Köklü dosya yapılarında tarama maliyeti yüksek olabilir; gerekiyorsa -maxdepth ile derinliği sınırlayın
    • Bazı sistemlerde kernel zamanları NTP ile senkronize udır; bu yüzden -mtime hesapları zaman dilimine bağlı olabilir
    • Yetkiler nedeniyle bazı dizinler taranamayabilir; hata çıktısını bastırmak için 2>/dev/null ekleyebilirsiniz


Günlük filtresiyle ilgili pratik bir yaklaşım, amaca uygun filtreleri zincirleyip ortak bir komut akışı oluşturmaktır. Örneğin son 24 saat içinde değişen günlükleri incelemek ve çıktılarını başka bir işleme yönlendirmek şu şekilde olabilir:
KOD
1find /var/log -type f -mtime -1 -print0 | xargs -0 -I{} you-processor "{}"


Bu konu sizin için hangi senaryoda daha faydalı oldu? Özellikle güvenlik odaklı denetimler veya kapanış zamanlı arşiv süreçlerinde hangi kombinasyonları kullanıyorsunuz?

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 3, Üyeler: 3, Misafirler: 0)
Toplam: 3 (üyeler: 3, misafirler: 0)
0 alıntı seçildi