FreeBSD: directorio actual del proceso que se ejecuta por el identificador de proceso
-
18-09-2019 - |
Pregunta
Tengo el PID de un proceso que se ejecuta en FreeBSD. ¿Cómo se obtiene el directorio actual?
Solución
Puede obtener el número de i-nodo del directorio de trabajo actual con
fstat -p $PID
Parece que lsof le dará una forma legible por humanos del directorio de trabajo actual, pero no tenemos que instalar en cualquiera de los equipos locales de FreeBSD, por lo que no se puede verificar eso.
Otros consejos
fstat puede encontrar el número de i-nodo y el sistema de archivos, y encontrar puede encontrar el directorio correcto.
Prueba esto:
fstat -p $$|perl -ane '$F[3] eq "wd" && system("find",$F[4],"-xdev","-inum",$F[5],"-print");'
Cuando se ejecuta como no root, encontrará probablemente salida de un buen número de "Permiso denegado" mensajes que se pueden evitar mediante la inserción de close(STDERR);
en frente de la $F[3]
(después de la primera comilla simple).
En versiones más recientes de FreeBSD, puede utilizar procstat -f $PID
, que muestra el nombre de ruta si todavía está en el nombre del núcleo caché.
/ proc / PID $ / cwd contiene un enlace simbólico a los programas de directorio de trabajo actual.