lsof Komutuna Giriş
Linux sistemlerinde lsof (List Open Files), sistem üzerindeki açık dosyaları listelemek için kullanılan en güçlü araçlardan biridir. Unix dünyasında 'her şey bir dosyadır' felsefesi gereği, ağ soketleri, dizinler ve cihazlar da dosya olarak kabul edilir. Bu rehber, sistem yöneticilerinin lsof ile günlük operasyonel sorunları nasıl çözeceğini anlatmaktadır.
Temel Sözdizimi ve Kullanım
lsof komutu, varsayılan olarak mevcut kullanıcının erişebildiği dosyaları listeler. Sistem genelinde tam bir görünürlük için sudo yetkisi gereklidir.
- Sistem genelindeki tüm açık dosyaları listelemek için:
sudo lsof - Belirli bir PID'ye (Process ID) ait dosyaları görmek için:
sudo lsof -p 1234 - Belirli bir kullanıcıya ait dosyaları listelemek için:
lsof -u username
Ağ ve Port Denetimi
Bir portun hangi uygulama tarafından kullanıldığını bulmak, özellikle servis çakışmalarında kritik öneme sahiptir.
Not: -nP bayraklarını kullanmak, DNS çözümlemesini devre dışı bırakarak komutun çok daha hızlı çalışmasını sağlar.TCP 80 portunu dinleyen süreci bulmak için:
sudo lsof -nP -iTCP:80 -sTCP:LISTENDosya Sistemi ve Disk Alanı Sorunları
Bazen dosyaları silseniz bile, disk alanı boşalmaz. Bunun nedeni, bir sürecin o dosyayı hala açık tutmasıdır.
- Silinmiş ancak hala açık olan dosyaları listelemek:
sudo lsof +L1 - Belirli bir dizin altındaki açık dosyaları özyinelemeli (recursive) olarak görmek:
sudo lsof +D /var/log
İleri Seviye Filtreleme ve Scripting
lsof, otomasyon süreçlerinde de oldukça kullanışlıdır. Örneğin, belirli bir portu dinleyen süreci otomatik sonlandırmak için:
kill $(sudo lsof -t -iTCP:8080 -sTCP:LISTEN)Burada -t bayrağı, komutun sadece PID numarasını döndürmesini sağlar, bu da onu kabuk scriptleri için mükemmel bir araç haline getirir.
Sorun Giderme İpuçları
- Eksik Çıktı: Eğer
lsofçıktısı beklediğinizden azsa, mutlakasudoile çalıştırın. - Yavaşlık: Büyük dizinlerde arama yaparken
+Dyerine+dkullanarak derinliği sınırlandırın. - Disk Alanı: Dosya silinmesine rağmen alan boşalmıyorsa,
lsof +L1ile ilgili süreci bulun ve ilgili servisi yeniden başlatın.



