¿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.
¿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.
Respuestas:
La /proc
forma sería inspeccionar el exe
enlace 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'
Quizás which
es lo que estás buscando. Por ejemplo, en mi sistema
which firefox
devoluciones
/usr/bin/firefox
Consulte también Buscar ruta de la aplicación que se ejecuta en Solaris, Ubuntu, Suse o Redhat Linux .
which
es genial, pero solo devuelve programas en su $ PATH. Si corro RandomProgramIDownloadedToErisKnowsWhere.bin
, esto no será de mucha utilidad.
Siempre que tenga un ID de proceso disponible, puede usar:
readlink -f /proc/$pid/exe
(reemplazar $pid
por el ID de proceso de un proceso)
Si el proceso no es de su propiedad, tendrá que ponerlo sudo
delante.
Un ejemplo para determinar la ubicación del comando firefox
:
La salida de ps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
es la ID del proceso, por lo que debe ejecutar:
readlink -f /proc/28179/exe
que salidas:
/usr/bin/firefox
/proc/$pid/exe
, si el binario se elimina accidentalmente, puede restaurarlo con:dd if=/proc/$pid/exe of=restored-binary
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 ...
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 C
y obtendrá un comando de los procesos que se ejecutaron.