macos - una - ver ruta en terminal mac
¿Cómo obtengo la ruta completa de un proceso en OS X? (3)
Sé que puedo obtener el PID
para un proceso mediante el uso de ps
, pero ¿cómo encontrar la ruta completa de ese proceso?
Prueba esto:
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk ''{print $1}'')/exe
donde $ PROCESS_NAME es el nombre del proceso que desea verificar.
Una solución puede ser usar qué:
which `ps -o comm= -p $PID`
Donde $ PID es pid del proceso que desea verificar. Probado en OS X 10.8.2.
OS X tiene la biblioteca libproc, que se puede usar para recopilar información de procesos diferentes. Para encontrar la ruta absoluta para un PID dado, se puede usar el siguiente código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <libproc.h>
int main (int argc, char* argv[])
{
pid_t pid; int ret;
char pathbuf[PROC_PIDPATHINFO_MAXSIZE];
if ( argc > 1 ) {
pid = (pid_t) atoi(argv[1]);
ret = proc_pidpath (pid, pathbuf, sizeof(pathbuf));
if ( ret <= 0 ) {
fprintf(stderr, "PID %d: proc_pidpath ();/n", pid);
fprintf(stderr, " %s/n", strerror(errno));
} else {
printf("proc %d: %s/n", pid, pathbuf);
}
}
return 0;
}
Ejemplo para compilar y ejecutar (el código anterior se almacena en pathfind.c, 32291 es el pid del proceso para el que estoy tratando de encontrar la información de ruta):
$ cc pathfind.c -o pathfind
$ ./pathfind 32291
proc 32291: /some/path/your-binary-app
Consulte esta publicación en el blog: http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid/