GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo puedo saber qué archivos tiene abiertos un proceso?

Solución 1:

Me encanta lsof , pero creo que es excesivo para una pregunta tan simple como esta. El /proc El sistema de archivos contiene todo lo que desea saber. Quizás un ejemplo sería mejor:

# 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

Como puede ver, el /proc/$PID El directorio contiene un enlace simbólico llamado "cwd" que vincula el CWD del proceso. Lo mismo es cierto para los descriptores de archivos abiertos enumerados en /proc/$PID/fd .

El /proc/$PID La jerarquía contiene una gran cantidad de información sobre todos los procesos en ejecución. ¡Vale la pena hurgar!

Solución 2:

Si tiene el comando lsof disponibles [que hacen la mayoría de *nix sabores] que usaría:

lsof -p NNN

para listar los archivos abiertos por el proceso NNN. Hace tiempo que no uso BSD pero de memoria fuser es un paralelo cercano a lsof.

No estoy seguro de un comando para encontrar el cwd de un proceso, pero en Linux cwd está vinculado al directorio /proc del proceso, es decir. /proc/NNN/cwd.

Solución 3:

si conoce el PID de los procesos, puede emitir un

lsof | grep YOURPID

Rápido y fácil de recordar.

o

lsof -c yourprogramexecutable

Solución 4:

Pruebe lsof si está instalado en su sistema

D


Linux
  1. Cómo aumentar el número de límites de archivos abiertos en Linux

  2. ¿Cómo verificar qué señales está escuchando un proceso?

  3. ¿Cómo puedo saber si estoy en una pantalla?

  4. Conteo de archivos abiertos por proceso

  5. ¿Cómo puedo saber qué está acelerando mi disco?

¿Cómo configurar archivos abiertos nginx max?

¿Cómo puedo determinar qué proceso tiene un archivo abierto en Linux?

¿Qué hacer cuando Ctrl + C no puede matar un proceso?

¿Cómo cerrar o (¿desvincular?) un puerto dejado abierto por una aplicación no autorizada?

¿Cómo saber qué proceso tiene abierto un puerto específico en Linux?

¿Cómo puedo saber qué proceso está causando que kswapd esté en uso?