GNU/Linux >> Belajar Linux >  >> Linux

lsof - batasi output hanya ke file fisik - bagaimana caranya?

Solusi 1:

Baru saja melihat-lihat beberapa halaman manual, tampaknya Anda menggunakan perintah:

sudo lsof /

Ini akan mencantumkan semua file yang terbuka di direktori /, yang semuanya ada di sistem file Linux. Baru diuji dan hanya menampilkan REG dan DIR.

Lebih banyak contoh:

lsof -a -d 0-999 -c <command name> /
lsof -a -d 0-999 -p <pid> /

0-999 membatasinya ke file dengan nomor deskriptor file.

Solusi 2:

Mungkin ada tombol, tetapi jika Anda tidak keberatan memfilternya melalui grep, Anda dapat melakukan sudo lsof | egrep 'REG|DIR' , dengan asumsi "file fisik" yang Anda maksud adalah file dan direktori biasa.

Lihat bagian OUTPUT ::TYPE dari halaman manual man lsof untuk semua jenis yang mungkin ada di kolom tersebut.

Solusi 3:

Inilah yang saya lakukan yang bekerja dengan sempurna untuk saya:

lsof -F n -p 12501 | grep ^n/ | cut -c2- | sort -u

-F n pilihan untuk lsof akan menyebabkannya hanya mencetak nama dari file yang terbuka. Setiap baris keluaran yang memiliki nama file terbuka akan dimulai dengan karakter tunggal n diikuti langsung oleh nama . Biasa file akan selalu menjadi nama file yang mutlak dan sepenuhnya memenuhi syarat. grep ^n/ akan memilih hanya baris dengan nama yang dimulai dengan / (artinya nama file yang mutlak dan memenuhi syarat); sehingga menghilangkan hal-hal seperti port terbuka, soket, pipa (seperti FIFO), dll. cut -c2- akan menghilangkan karakter pertama, n , hanya menyisakan nama file. Lalu terakhir, sort -u akan menghilangkan entri duplikat.

Satu peringatan, ini akan menyertakan file yang tidak biasa asalkan namanya diawali dengan / . Misalnya, semua file yang dimulai dengan berikut ini akan disertakan:

  • /dev
  • /proc
  • /sys

Dan mungkin ada yang lain tergantung pada OS Anda.


Linux
  1. Bagaimana Anda membedakan direktori hanya untuk file dari jenis tertentu?

  2. Perintah Linux:Bagaimana cara 'menemukan' hanya file teks?

  3. Bagaimana cara mendapatkan nama file dengan Linux 'find'?

  1. Bagaimana cara mendapatkan hanya ID proses dalam menentukan nama proses di linux?

  2. Cara membersihkan hanya target di buildroot

  3. Bagaimana cara membatasi pengguna SSH untuk hanya mengizinkan tunneling SSH?

  1. Bagaimana Cara Masuk Direktori Yang Namanya Hanya Minus?

  2. Bagaimana Cara Mencetak Nama File Yang Hilang Dalam Folder?

  3. Bagaimana suatu proses tampaknya memiliki nama yang berbeda dalam keluaran ps?