Linux: ¿encuentra el directorio de trabajo actual de un proceso?


11

Si tengo un PID X de proceso, ¿cómo puedo averiguar en qué directorio se estaba ejecutando? Puedo ver con ps aux | grep Xla línea de comando completa con la que se invocó. Sin embargo, en este caso es ./script.sh, y quiero ver cuál script.shse está ejecutando.

Respuestas:


11

El problema /proc/PID/exees que, para los scripts de shell, muestra la ubicación del shell. El problema /proc/PID/cwdes que muestra el directorio de trabajo actual del proceso. Si el proceso cambia de directorio, eso se refleja en el destino de ese enlace simbólico.

Esto mostrará cuál era el $ PWD en el momento en que se inició el script (sustituya el ID del proceso que le interesa donde ve "PID"):

procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir

o simplemente:

grep -az "\bPWD" /proc/PID/environ

Esto mostrará el comando que lo inició para que pueda ver si se utilizó un directorio relativo o absoluto:

proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd

o simplemente:

grep -az PROC_NAME /proc/PID/cmdline

Juntos, estos deberían mostrar qué script se está ejecutando. Para empezar, ./todo lo que necesitas es procdir.


pwdx es mejor que esto.
Bjorn

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.