Yalnızca fiziksel dosyaları listelemem gerektiğini (soketleri değil, TCP / IP bağlantılarını değil, yalnızca fiziksel dosyaları) nasıl söyleyebilirim?
Yalnızca fiziksel dosyaları listelemem gerektiğini (soketleri değil, TCP / IP bağlantılarını değil, yalnızca fiziksel dosyaları) nasıl söyleyebilirim?
Yanıtlar:
Sadece bazı man sayfalarına baktım, görünüşe göre bu komutu kullanıyorsunuz:
sudo lsof /
Bu, Linux dosya sistemindeki her şey olan / dizinindeki tüm açık dosyaları listeler. Sadece test edilmiş ve sadece REG ve DIR gösterir.
Daha fazla örnek:
lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /
0-999 dosya tanıtıcı numarasına sahip dosyaları sınırlar.
/
Bir anahtar olabilir, ancak grep aracılığıyla filtrelemeyi sakıncası yoksa sudo lsof | egrep 'REG|DIR'
, "fiziksel dosyalar" ile normal dosyaları ve dizinleri kastediyorsunuz.
man lsof
Bu sütunda olabilecek tüm türler için man sayfasının ÇIKIŞI :: TİP bölümüne bakın .
Yaptığım şey bu benim için mükemmeldi:
lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u
-F n
Seçeneği lsof
sadece çıktısını neden olacaktır isimleri açık dosyaların. Açık bir dosyanın adı olan her çıkış hattı tek bir karakterle başlayacak n ve hemen ardından isim . Normal dosyalar her zaman dosyanın tam ve tam nitelikli adı olur. Bu grep ^n/
sadece /
( ile başlayan, mutlak, tam nitelikli bir dosya adı anlamına gelir); Böylece açık portlar, soketler, borular (FIFO'lar gibi), vb. gibi şeyleri cut -c2-
elimine eder. İlk karakter olan n
sadece dosya ismini kaldıracaktır . Sonra nihayet, sort -u
yinelenen girişleri ortadan kaldıracaktır.
Bir uyarı, bu adlarıyla başlandığı sürece normal olmayan dosyaları içerecektir /
. Örneğin, aşağıdakilerden başlayan tüm dosyalar dahil edilir:
İşletim sisteminize bağlı olarak başkaları da olabilir.