¿Qué comando (s) se pueden usar para averiguar el directorio de trabajo actual (CWD) de un proceso en ejecución? Estos serían comandos que podría usar externamente desde el proceso.
168
¿Qué comando (s) se pueden usar para averiguar el directorio de trabajo actual (CWD) de un proceso en ejecución? Estos serían comandos que podría usar externamente desde el proceso.
Hay 3 métodos que conozco:
$ pwdx <PID>
$ lsof -p <PID> | grep cwd
$ readlink -e /proc/<PID>/cwd
Digamos que tenemos este proceso.
$ pgrep nautilus
12136
Entonces si usamos pwdx
:
$ pwdx 12136
12136: /home/saml
O puedes usar lsof
:
$ lsof -p 12136 | grep cwd
nautilus 12136 saml cwd DIR 253,2 32768 10354689 /home/saml
O puedes meter directamente en /proc
:
$ readlink -e /proc/12136/cwd/
/home/saml
/proc
.pwdx
funciona para mi.pgrep <process-name>
Supongo que tiene la identificación del proceso
pid
. La mayoría de los métodos en la mayoría de los sistemas requerirán que el shell desde el que está haciendo esto se ejecute como el mismo usuario que el proceso de destino (o raíz).En Linux y Solaris y quizás en algunos otros sistemas System V:
En Linux (excepto los sistemas integrados donde
readlink
no está disponible) pero no en Solaris:En casi cualquier variante de Unix, puede usar
lsof
. Tenga en cuenta que si hay una nueva línea, se imprimirá como\n
(indistinguible de la barra invertida seguida den
). Si se siente afortunado, puede usar la segunda forma, que silencia silenciosamente todos los espacios en blanco en el nombre del directorio.Bonificación: si necesita hacer que un proceso cambie su directorio actual, puede hacerlo con un depurador. Esto es útil, por ejemplo, para mover un programa de larga ejecución que no le importa su directorio actual fuera del directorio que desea eliminar. No todos los programas aprecian que su directorio actual cambie bajo sus pies; por ejemplo, es probable que un shell se bloquee.
fuente
pwdx
otros Unixes?pwdx
está presente en Solaris desde el siglo XX, Linux desde mediados de la década de 2000 (imitando Solaris, dice la página del manual). No está presente en ningún otro unix AFAIK.pwdx
hay?Si su sistema tiene
/proc
, siempre puede hacer:Si desea conocer el CWD desde un proceso diferente al que le interesa, obviamente debe reemplazarlo
$$
con el PID de su proceso de interés.fuente
Basado @Gilles respuesta ..
si conoce el PID de su proceso ... para Mac OSX y Linux use:
para obtener el directorio de trabajo del proceso ...
fuente