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

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

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

Respuesta1

El problema /proc/PID/exees que, para los scripts de shell, muestra la ubicación del shell. El problema /proc/PID/cwdes que se muestra elactualdirectorio de trabajo 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 vea "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 usó 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 mostrarle qué script se está ejecutando. Para empezar, ./todo lo que necesita es procdir.

Respuesta2

Hay una respuesta más sencilla, y es usar pwdx, como se detallaaquí

información relacionada