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