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

0 Ответов 11 Просмотров
Оценившие
Участники
Автор темы #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:
    КОД
    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:
    КОД
    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:
    КОД
    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):
    КОД
    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:
КОД
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?

Чтобы ответить, необходимо войти в систему.

Пользователи, просматривающие эту тему (Всего: 4, Участники: 4, Гости: 0)
Всего: 4 (участники: 4, гости: 0)
0 цитат выбрано