Konuyu Açan
#1
inotifywait ile Dosya Olayları
[inotifywait] ile Dosya Olaylarını Anlamak ve Uygulamak
[inotifywait] ile Dosya Olayları konusunda daha derin senaryolar veya özel bir dizin yapısı için kendi kullanım hedefinizi paylaşırsanız, olay türleri ve filtreleme stratejileri açısından daha odaklı örnekler ekleyebilirim. Özellikle hangi dosya türlerini izlemek veya hangi tetikleyicileri oluşturmak istiyorsunuz?
[inotifywait] ile Dosya Olaylarını Anlamak ve Uygulamak
İş akışlarında değişiklikleri anında yakalamak, otomasyonları tetiklemek ve loglama yapmak çoğu zaman gereklidir. Linux çekirdeğinin inotify arayüzü bu ihtiyacı karşılarken, inotifywait bu işlemi basitleştirir; olayları bekler, filtreler ve çıktılar üretir. Bu yazı, temel kullanım şekillerinden ileri düzey senaryolara kadar bir yol haritası sunar.
- Temel kavramlar: İnotify, olay türleri ve olay kaynakları. inotifywait, belirli bir dizin ya da dosya üzerinde oluşan olayları bekleyen ve gerektiğinde çıktıyı standart çıktıya yazan bir araçtır. Olay türleri arasında CREATE, MODIFY, DELETE, MOVEd_TO, MOVEd_FROM gibi kategoriler bulunur. Dosya sistemi değişikliklerini izlemek için -m (monitor) bayrağı kullanılır; bu sayede süreç sonuna kadar olaylar akmaya devam eder.
- Basit kullanım örneği:
KOD1
inotifywait -m /var/log
Bu komut, /var/log altındaki herhangi bir dosyada oluşan olayları sürekli olarak dinler ve her biri için günlük tarzı bir çıktı üretir: olay tipi, dosya adı ve kaynak dizin. - Filtreleme ve odaklanma: Belirli olayları dinlemek için -e bayrağı kullanılır. Örneğin sadece CREATE ve MODIFY olaylarını dinlemek için:
KOD1
inotifywait -m -e CREATE -e MODIFY /home/kullanici/kalemler - Dosya düzeyinde izlemenin ötesinde dizinler arası hareket: Olası hareketler MOVED_FROM ve MOVED_TO olaylarını da yakalamak, bir dosya yeniden adlandırıldığında veya taşındığında değişimi fark etmek için önemlidir:
KOD1
inotifywait -m -e MOVED_FROM -e MOVED_TO /var/www/html - Gelişmiş akışlar ve otomasyon: Olaylar gerçekleştiğinde belirli komutları tetiklemek için while döngüsü ve read ile birlikte kullanılır. Örneğin, belirli bir dizinde yeni bir dosya oluşturulduğunda bir işlem çalıştır:
KOD1234
inotifywait -m -e CREATE /tmp | while read path action file; do echo "Olay: $action on $path$file" /usr/local/bin/process_new_file "$path$file" done
Bu yapı, hata toleransını artırmak ve uzun süreli izlemelerde log tutmayı kolaylaştırır. - Performans ve güvenlik ipuçları: İzlediğiniz dizinlerin hacmi büyüdükçe inotify limitlerini dikkat etmek gerekir. /proc/sys/fs/inotify/ max_user_watches değeri, kullanıcı başına izlenebilecek dosya sayısını belirler; çok sayıda dizin izliyorsanız bu limiti artırmak gerekir. Çalıştırırken yetki konusuna dikkat edin; bazı dizinler kök kullanıcıya özel izinler gerektirir.
- Uygulama senaryoları: logrotate ile entegre izleme, medya proje akışlarında yeni dosyaları tetikleme, konfigürasyon değişikliklerini canlı olarak doğrulama gibi kullanım alanları pratik örneklerdir. Özellikle sürekli entegrasyon (CI) veya güncel içerik akışında dosya tabanlı tetikleyiciler pratik çözümler sunar.
[inotifywait] ile Dosya Olayları konusunda daha derin senaryolar veya özel bir dizin yapısı için kendi kullanım hedefinizi paylaşırsanız, olay türleri ve filtreleme stratejileri açısından daha odaklı örnekler ekleyebilirim. Özellikle hangi dosya türlerini izlemek veya hangi tetikleyicileri oluşturmak istiyorsunuz?
