GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso sapere quali file ha aperto un processo?

Soluzione 1:

Adoro lsof , ma penso che sia eccessivo per una semplice domanda come questa. Il /proc filesystem contiene tutto ciò che vuoi sapere. Forse un esempio sarebbe il migliore:

# 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

Quindi, come puoi vedere, il /proc/$PID directory contiene un collegamento simbolico chiamato "cwd" che collega il CWD del processo. Lo stesso vale per i descrittori di file aperti elencati in /proc/$PID/fd .

Il /proc/$PID La gerarchia contiene una ricchezza di informazioni su tutti i processi in esecuzione. Vale la pena curiosare!

Soluzione 2:

Se hai il comando lsof disponibile [cosa che fa la maggior parte delle versioni *nix] che useresti:

lsof -p NNN

per elencare i file aperti dal processo NNN. Non uso BSD da un po', ma a memoria fuser è uno stretto parallelo di lsof.

Non sono sicuro di un comando per trovare cwd di un processo ma su Linux cwd è collegato simbolicamente alla directory /proc del processo, ad es. /proc/NNN/cwd.

Soluzione 3:

se conosci il PID dei processi, puoi semplicemente emettere un

lsof | grep YOURPID

Facile e veloce da ricordare.

o

lsof -c yourprogramexecutable

Soluzione 4:

Prova lsof se è installato sul tuo sistema

D


Linux
  1. Come determinare quale processo sta creando un file?

  2. Come posso sapere in Linux quale processo ha inviato un segnale al mio processo

  3. Come posso ottenere ciò che la mia funzione principale ha restituito?

  4. Conteggio dei file aperti per processo

  5. Cosa fare quando Ctrl + C non può terminare un processo?

Come chiudere o (svincolare?) una porta lasciata aperta da un'applicazione non autorizzata?

Come posso sapere cosa sta facendo girare il mio disco?

Come posso sapere quale versione di Linux sto usando?

Come impedire a un processo di scrivere file

Come sapere quale processo ha una porta specifica aperta su Linux?

Come faccio a sapere quale processo sta causando l'uso di kswapd?