¿Cómo determino la ruta a un binario de un proceso?


30

¿Hay alguna manera de averiguar la ubicación del directorio / disco desde la que se inició un proceso? Soy consciente del montaje / proc pero no sé realmente dónde mirar dentro de él.


1
¿Te refieres a la ubicación del binario, o el directorio desde el que comenzó un proceso?
Lekensteyn

Perdón por la ambigüedad, me refiero al binario
SuperJumbo

Respuestas:


37

La /procforma sería inspeccionar el exeenlace en el directorio correspondiente al pid.

Tomemos un ejemplo con update-notifier:

Encuentre el pid, que es 15421 en este ejemplo:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

Busque el enlace simbólico:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

Oh sí, ya casi estaba allí. Leyenda, gracias.
SuperJumbo


6

Siempre que tenga un ID de proceso disponible, puede usar:

readlink -f /proc/$pid/exe

(reemplazar $pidpor el ID de proceso de un proceso)

Si el proceso no es de su propiedad, tendrá que ponerlo sudodelante.

Un ejemplo para determinar la ubicación del comando firefox:

  1. La salida de ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 es la ID del proceso, por lo que debe ejecutar:

    readlink -f /proc/28179/exe
    

    que salidas:

    /usr/bin/firefox
    

2
Puede hacer cosas geniales con /proc/$pid/exe, si el binario se elimina accidentalmente, puede restaurarlo con:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Presione Ctrl+ Alt+ Tpara ir a una terminal y escriba:

ls -al /proc/{pid}/fd  

y luego verifique la salida

Esto enumerará todos los archivos con los que está asociado su proceso ...


¿Podría revisar mis ediciones y también la ayuda de edición para mejorar la legibilidad de sus respuestas en el futuro ... ;-)
Fabby

0

Todos los comandos en las otras respuestas son buenos, pero podría hacer aún más: ver cómo se ha ejecutado algún proceso antes de llegar a la lista de procesos.

Ejecutar en terminal:

top

Y mientras se está ejecutando, presione el teclado Cy obtendrá un comando de los procesos que se ejecutaron.

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.