Sistemde her zaman çalışan, sistemin farklı dosyalarına erişen bir takım işlemler vardır. Bu dosyalar disk dosyaları, komut dosyaları, ağ yuvaları, aygıtlar, adlandırılmış kanallar ve diğerleri olabilir. “lsof” kullanarak hata ayıklama gibi pek çok şey yapmak mümkündür. Sistem yöneticilerinin hangi dosyalara hangi işlemlerle erişildiğini anlaması da oldukça yararlıdır. Bulduğum en kullanışlı senaryolardan biri, bir dosya sisteminin bağlantısını kesmek üzereyken ancak hala erişiliyorsa.
Lafı fazla uzatmadan “lsof” ile başlayalım! Mevcut UNIX/Linux sisteminizde zaten “lsof” kurulu olduğunu varsayıyorum.
yer
hangi lsof
Bu, komutun tam yolunu bildirir, bu durumda "lsof".
"lsof" versiyonulsof -v
Bu, ikili, derleyici sürümü, derleyici bayrakları ve diğerleri dahil olmak üzere, "lsof" un ayrıntılı sürüm bilgilerini rapor edecektir.
Temel “lsof” kullanımı
“lsof”u kendi başına çalıştır.
lsof
Bu, komutun çalıştırıldığı anda sistem tarafından erişilen tüm dosyaların BÜYÜK bir listesini bildirir.
Tüm alanlar açıklayıcı olsa da, çoğunlukla “FD” ve “TYPE” sütunları ve değerleri konusunda kafanız karışır. Onları kontrol edelim.
FD: “Dosya Tanımlayıcı”nın Kısaltması. Aşağıdaki değerlerle geliyor.
- cwd: Geçerli çalışma dizini
- rtd: Kök dizin
- txt: Program metni (veri, kod ve diğerleri)
- mem: Bellek eşlemeli dosya
- hata: FD bilgi hatası
- mmap: Bellek eşlemeli aygıt
- ltx: Paylaşılan kitaplık metni (veri ve kod)
- m86: DOS Birleştirme eşlenmiş dosyası
Sütunda fark edeceğiniz başka değerler de vardır, örneğin “1u” ve ardından u, r, w, vb. değer. bunlar ne anlama geliyor?
- r: Okuma erişimi
- w: Yazma erişimi
- u: Okuma ve yazma erişimi
- - : Bilinmeyen mod ve bir kilit karakteri içeriyor
- ": Mod bilinmiyor ve kilit karakteri yok
TÜR: Dosya türünü ve kimliğini açıklar. Değerler aşağıdaki gibidir.
- YÖN: Dizin
- CHR: Karaktere özel dosya
- REG: Normal dosya
- FIFO: İlk giren ilk çıkar
Kullanıcıya özel açılan dosyalar
Linux mükemmel bir çok kullanıcılı platformdur. Birden fazla kullanıcı aynı anda sisteme erişebilir ve izinlerinin olduğu işlemleri gerçekleştirebilir.
Belirli bir kullanıcı tarafından erişilen dosyaları kontrol etmek için aşağıdaki komutu çalıştırın.
lsof -u
Ancak, daha yüksek rütbeli kullanıcıları kontrol etmek için “lsof”, “süper kullanıcı” ayrıcalığına ihtiyaç duyacaktır.
sudo lsof -u
Belirli bir kullanıcının eriştiği tüm komutları ve dosyaları kontrol etmeye ne dersiniz?? Aşağıdakini çalıştırın.
lsof -i -u
Yine, daha yüksek rütbeli kullanıcılar için “lsof”, “süper kullanıcı” ayrıcalığına ihtiyaç duyacaktır.
sudo lsof -i -u
Bağlantı noktasına özel çalışan işlemler
Halihazırda belirli bir portu kullanan tüm işlemleri bulmak için “-i” bayrağı ve ardından protokol ve port bilgileri ile “lsof” çağırın.
lsof -i<46>:
Örneğin, şu anda TCP/IP protokolü üzerinden 80 numaralı bağlantı noktasına erişen tüm programları kontrol etmek için aşağıdaki komutu çalıştırın.
lsof -i TCP:80
Bu yöntem, belirli bir aralıkta, örneğin 1'den 1000'e kadar bağlantı noktalarını kullanan tüm işlemleri göstermek için de kullanılabilir. Komut yapısı, port numarası kısmında biraz sihirle öncekine benzer.
lsof -i TCP:1-1000
Protokole özgü süreçler
Şu anda IPv4 ve IPv6 protokollerini kullanan işlemleri gösteren 2 örnek.
lsof -i 4lsof -i 6
Ağ bağlantılarını listeleme
Aşağıdaki komut, mevcut sistemden tüm ağ bağlantılarını rapor edecektir.
lsof -i
^ ile hariç
Evet, belirli bir kullanıcıyı, bağlantı noktasını, FD'yi ve diğerlerini “^” karakterini kullanarak hariç tutabiliriz. Tüm çıktıyı mahvetmemek için tek yapmanız gereken onu dikkatli kullanmaktır.
Bu örnekte, "root" kullanıcısının tüm işlemlerini hariç tutalım.
lsof -u^kök
Bu dışlama mekanizmasını “lsof” ile, örneğin “-c”, “-d” vb. gibi bayraklarla kullanmanın başka yolları da vardır. Tüm bayraklar bu mekanizmayı desteklemez. Bu nedenle, bazı komut dosyalarına uygulamadan önce herhangi bir bayrakla bu yöntemle bir demo denemenizi öneririm.
PID arama
PID, sistemde çalışan herhangi bir işlemin önemli bir özelliğidir. Belirli bir sürece daha hassas nokta atışı sağlar. Aynı ikili kendi kopyalarını oluşturabileceği ve paralel olarak farklı görevleri gerçekleştirebileceği için işlem adı birçok durumda pek yardımcı olmaz.
Bir işlemin PID'sini nasıl alacağınızı bilmiyorsanız, çalışan tüm işlemleri listelemek için "ps" kullanın ve işlem adı ve/veya komutları ile "grep" kullanarak çıktıyı filtreleyin.
ps -A
Şimdi “grep” kullanarak filtrelemeyi gerçekleştirin.
ps-A | grep
Şimdi, PID'nin hangi dosyalara eriştiğine bakın.
lsof -pBelirli bir cihaz için açık dosyaları listeleme
“lsof”un işlevselliği sadece bu işlevlerle sınırlı değildir. Ayrıca "lsof" sonucunu cihaz bazında da filtreleyebilirsiniz. Bu amaçla, komut şöyle görünecek.
lsof
Bu komut, belirli bir dosya sistemine erişen sahip bilgileriyle çalışan tüm işlemleri bulmak için çok kullanışlıdır. Bir dosya sisteminin bağlantısını kesmekte sorun yaşıyorsanız, gitmenin en iyi yolu budur.
lsofAçılan dosyaları bir dizin altında listeleyin
Önceki örneğe benzer şekilde, herhangi bir işlemin ona erişip erişmediğini öğrenmek için dizin yolunu “lsof”a iletmeniz yeterlidir.
Not: “lsof” dizini tekrar tekrar kontrol eder, bu yüzden zaman alabilir.
=lsof +D
Bonus: tüm kullanıcı etkinliğini sonlandırın
Bir kullanıcının yaptığı her şeyi kolayca karıştırabileceğinden bu kısımda son derece dikkatli olun. Aşağıdaki komut, bir kullanıcının çalışan tüm işlemlerini öldürür.
sudo kill -9 'lsof -t -u“lsof”un özellikleri sadece burada bitmiyor. Burada bahsedilenler, günlük olarak en çok ihtiyacımız olacak olanlardır. Kullanışlı olabilecek başka birçok "lsof" işlevi vardır (tabii ki belirli durumlarda).
Mevcut tüm özellikler ve kullanımları için “lsof”un man ve bilgi sayfalarına göz atın.
adam lsofbilgi lsof
lsof -?
Zevk almak!