GNU/Linux >> Znalost Linux >  >> Linux

lsof - omezit výstup pouze na fyzické soubory - jak?

Řešení 1:

Právě jsem si prohlédl nějaké manuálové stránky, zdá se, že používáte příkaz:

sudo lsof /

Zobrazí se seznam všech otevřených souborů v adresáři /, což je vše na souborovém systému Linux. Právě testováno a zobrazuje pouze REG a DIR.

Další příklady:

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

0-999 jej omezuje na soubory s číslem deskriptoru souboru.

Řešení 2:

Může existovat přepínač, ale pokud vám nevadí filtrovat to přes grep, můžete to udělat sudo lsof | egrep 'REG|DIR' , za předpokladu, že "fyzickými soubory" máte na mysli běžné soubory a adresáře.

Viz část OUTPUT ::TYPE na manuálové stránce man lsof pro všechny typy, které mohou být v tomto sloupci.

Řešení 3:

Udělal jsem to, co mi perfektně fungovalo:

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

-F n možnost lsof způsobí, že vytiskne pouze jména z otevřených souborů. Každý výstupní řádek, který má název otevřeného souboru, bude začínat jedním znakem n bezprostředně za ním následuje jméno . Normální soubory budou vždy absolutním, plně kvalifikovaným názvem souboru. grep ^n/ vybere pouze řádky s názvem začínajícím / (což znamená absolutní, plně kvalifikovaný název souboru); čímž se eliminují věci jako otevřené porty, zásuvky, potrubí (jako FIFO) atd. cut -c2- odstraní první znak, n , ponechá se pouze název souboru. Pak konečně sort -u odstraní všechny duplicitní položky.

Jedno upozornění, bude to zahrnovat soubory, které nejsou běžné pokud jejich jméno začíná / . Například budou zahrnuty všechny soubory začínající následujícím:

  • /dev
  • /proc
  • /sys

A mohou existovat další v závislosti na vašem operačním systému.


Linux
  1. Jak seřadit výstup Du podle velikosti?

  2. Jak zadat adresář, jehož název je pouze mínus?

  3. Jak vytvořit adresáře pouze pro výstup stromu?

  1. Jak odlišíte adresář pouze pro soubory určitého typu?

  2. Jak získat pouze ID procesu v zadaném názvu procesu v linuxu?

  3. Jak mohu pomocí ls vypsat pouze neprázdné soubory?

  1. Příkaz Linux:Jak „najít“ pouze textové soubory?

  2. Jak získat pouze ID všech běžících procesů?

  3. Jak omezit uživatele SSH, aby povolil pouze tunelování SSH?