Konuyu Açan
#1
lsof ile dosya sistemi kullanımını inceleme
lsof (list open files) temel olarak hangi süreçlerin hangi dosyaları, hangi kullanımlarda açtığını gösterir. Linux/Unix sistemlerinde süreçler dosyalar üzerinden iletişim kurar ve kaynakları dosya şeklinde temsil eder. Bu nedenle dosya sistemi kullanımını anlamak için açılan dosyaların, yönlendirme dosyalarının ve özel olarak bağlanan cihazların görülmesi gerekir. lsof’nun gücü ise süreçler arası bağımlılıkları görselleştirmek ve ani kaynak tüketimini tespit etmekte yatıyor. Ayrıca ağ soketleri, kütüphane sürümleri üzerinden hangi binanın hangi kaynağa ulaştığını analiz etmek için de kullanılır.
[p]*Çalışma mantığı ve temel kullanımlar
[/p]
lsof iki ana amacı tek bir komutta bir araya getirir: hangi dosyalar açık ve hangi süreçler onları açtı. Sık kullanılan sütunlar şunlar:
COMMAND, pid, USER: hangi komut ve kullanıcı
FD: dosya tanımlayıcısı ve durum (cwd,root,txt gibi)
TYPE: dosya türü (REG, DIR, DEL, CHR, SOCK, PIPE)
SIZE/OFF: boyut veya kaydırma
NODE: inode numarası
NAME: dosya adı veya bağlantı hedefi
Bu veriyi, aşağıdaki sıklıkla kullanılan varyasyonlarla filtrelemek pratik:
lsof +L1 – küçültülmüş listemsi çıktıda artık dosya referansları olmayan simgelerin temizlenmesi
lsof -u root – sadece root kullanıcısına ait açık dosyalar
lsof -c nginx – belirli bir proses adıyla ilişkilendirilen dosyalar
lsof -p 1234 – belirli bir PID’nin açtığı dosyalar
lsof /var/log – belirli bir yolun üzerinde hangi süreçlerin dosyası olduğunu görmek
[p]*Ağ ve sistem durumları için uygulamalar
[/p]
[p]*Güvenlik ve bakım açısından ipuçları
[/p]
lsof, dosya sistemi üzerinde hangi süreçlerin hangi kaynakları nasıl kullandığını net bir tablo halinde verir. Özellikle güvenlik tetkiklerinde, performans analizlerinde ve bakım sırasında hangi süreçlerin hangi dosya türlerine erişim sağladığını hızlıca görmek için temel araç olarak düşünülmelidir. Belirli kullanım senaryolarında hangi filtrelerin en kıymetli olduğunu deneyimle öğrenmek uzun vadede zaman tasarrufu sağlar. Bu yaklaşımı kendi ortamınızla test ederek, sık karşılaştığınız durumlar için kısa filtre setleri oluşturmanız önerilir.
Giriş ve neden önemli
lsof (list open files) temel olarak hangi süreçlerin hangi dosyaları, hangi kullanımlarda açtığını gösterir. Linux/Unix sistemlerinde süreçler dosyalar üzerinden iletişim kurar ve kaynakları dosya şeklinde temsil eder. Bu nedenle dosya sistemi kullanımını anlamak için açılan dosyaların, yönlendirme dosyalarının ve özel olarak bağlanan cihazların görülmesi gerekir. lsof’nun gücü ise süreçler arası bağımlılıkları görselleştirmek ve ani kaynak tüketimini tespit etmekte yatıyor. Ayrıca ağ soketleri, kütüphane sürümleri üzerinden hangi binanın hangi kaynağa ulaştığını analiz etmek için de kullanılır.
[p]*Çalışma mantığı ve temel kullanımlar
[/p]
lsof iki ana amacı tek bir komutta bir araya getirir: hangi dosyalar açık ve hangi süreçler onları açtı. Sık kullanılan sütunlar şunlar:
Bu veriyi, aşağıdaki sıklıkla kullanılan varyasyonlarla filtrelemek pratik:
[p]*Ağ ve sistem durumları için uygulamalar
[/p]
- Ağ dinleyici ve bağlantılar: lsof -i -P -n; -i ile IPv4/IPv6 ağ dosyalarını listeler, -P portları sayısal olarak gösterir, -n DNS’i çözmez. Bu, güvenlik tetkiklerinde hangi süreçlerin hangi portları kullandığını hızlıca görmek için idealdir.
- Sembolik bağlar ve kütüphaneler: lsof -p 1 | grep txt ile init’in hangi dosyaları kullandığını, lsof -p 1234 | grep /lib ile paylaşılan kütüphaneleri görmek, sürümler arası bağımlılıkları anlamak için yaklaşımlardır.
- Disk kullanımını izleme: FD sütunundaki cwd, rtd gibi alanlar, mevcut çalışma dizinlerini ve kök dosya sisteminin takibini sağlar. Büyük ölçekli sistemlerde lsof’yi cron ile düzenli çalıştırıp değişiklikleri günlük log’lara yazdırmak faydalı olabilir.
[p]*Güvenlik ve bakım açısından ipuçları
[/p]
- Özellikle sunucuda anormal süreçler veya beklenmedik açılan dosyalar için lsof -nP -i +TCP -sTCP:LISTEN gibi filtrelerle dinleyicileri hızlıca gözden geçirmek gerekir.
- Log rotasyonunda dosya kilitlerini görmek için lsof /var/log ve lsof -a -p +L0 gibi sıkıştırılmış/rotasyona uğramış durumlar kontrol edilmelidir.
- Bir dosyaya olan eşzamanlı erişimleri izlemek için inotify ile birleşik bir akış da kurulabilir: lsof’nun çıktısını log filtreleriyle zayıflamadan analiz etmek, hizmet yeniden başlatmalarında hangi süreçlerin etkilenebileceğini öngörmeye yardımcı olur.
Sonuç ve pratik öneri
lsof, dosya sistemi üzerinde hangi süreçlerin hangi kaynakları nasıl kullandığını net bir tablo halinde verir. Özellikle güvenlik tetkiklerinde, performans analizlerinde ve bakım sırasında hangi süreçlerin hangi dosya türlerine erişim sağladığını hızlıca görmek için temel araç olarak düşünülmelidir. Belirli kullanım senaryolarında hangi filtrelerin en kıymetli olduğunu deneyimle öğrenmek uzun vadede zaman tasarrufu sağlar. Bu yaklaşımı kendi ortamınızla test ederek, sık karşılaştığınız durumlar için kısa filtre setleri oluşturmanız önerilir.
