GNU/Linux >> Znalost Linux >  >> Linux

Jak zjistím, jaké soubory má proces otevřené?

Řešení 1:

Miluju lsof , ale myslím, že na takovou jednoduchou otázku je to přehnané. /proc souborový systém obsahuje vše, co chcete vědět. Možná by byl nejlepší příklad:

# ps ax|grep tail
 7196 pts/4    S+     0:00 tail -f /var/log/messages
 8773 pts/0    R+     0:00 grep tail
# ls -l /proc/7196/cwd
lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte
# ls -l /proc/7196/fd
total 0
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4
lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages

Takže jak vidíte, /proc/$PID adresář obsahuje symbolický odkaz nazvaný "cwd", který spojuje CWD procesu. Totéž platí pro otevřené deskriptory souborů uvedené v /proc/$PID/fd .

/proc/$PID hierarchie obsahuje velké množství informací o všech běžících procesech. Stojí za to se do toho pustit!

Řešení 2:

Pokud máte příkaz lsof dostupné [což dělá většina *nix příchutí] byste použili:

lsof -p NNN

zobrazit seznam souborů otevřených procesem NNN. Už nějakou dobu nepoužívám BSD, ale z paměťové zapékací jednotky je blízkou paralelou k lsof.

Nejsem si jistý příkazem k nalezení cwd procesu, ale na Linuxu je cwd symbolicky propojen do adresáře /proc procesu, tzn. /proc/NNN/cwd.

Řešení 3:

pokud znáte PID procesů, stačí vydat

lsof | grep YOURPID

Rychle a snadno zapamatovatelné.

nebo

lsof -c yourprogramexecutable

Řešení 4:

Zkuste lsof, pokud je ve vašem systému nainstalován

D


Linux
  1. Jak zvýšit limit počtu otevřených souborů v Linuxu

  2. Jak zkontrolovat, jaké signály proces poslouchá?

  3. Jak poznám, že jsem na obrazovce?

  1. Jak mohu v Linuxu zjistit, který proces poslal mému procesu signál

  2. Jak mohu získat to, co se mi vrátila hlavní funkce?

  3. Počítání otevřených souborů na proces

  1. Jak nastavit nginx max otevřené soubory?

  2. Jak zavřít nebo (odpojit?) port ponechaný otevřený nepoctivou aplikací?

  3. Jak zjistím, který proces způsobuje, že se kswapd používá?