macos - temperatura - tipos de controladores pid
Obtener ruta real de aplicaciĆ³n de pid? (6)
Es bastante fácil obtener el nombre / ubicación del proceso si conoce el PID, simplemente use proc_name o proc_pidpath. Eche un vistazo al siguiente ejemplo, que proporciona la ruta del proceso:
#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;
}
¿Cómo puedo obtener los detalles del proceso como el nombre de la aplicación y la ruta real de la aplicación desde el ID de proceso?
Estoy usando Mac OS X.
Me gustaría hacer un mejor ssh-copy-id solo en bash !! Para eso, tengo que saber dónde está sshd para preguntarle su configuración real. En algún sistema tengo varios sshd y que no es mi amigo. También en algunos macOS, el comando ps no mostró la ruta completa para sshd.
lsof -p $PPID | grep /sshd | awk ''{print $9}''
esta vuelta
/usr/sbin/sshd
despues de que pude pedir
sudo /usr/sbin/sshd -T | grep authorizedkeysfile
esta vuelta, en algun sistema
authorizedkeysfile .ssh/authorized_keys
Así que tengo que poner .ssh / authorized_keys
Puede usar el Monitor de actividad - http://en.wikipedia.org/wiki/Activity_Monitor
O en la aplicación Terminal puedes usar:
ps xuwww -p PID
PID
es el identificador de proceso que busca. Más ayuda en el comando ''ps` que puede encontrar con
man ps
Si el PID es el PID de una "aplicación de usuario", entonces puede obtener la aplicación NSRunningApplication
de la aplicación así:
NSRunningApplication * app = [NSRunningApplication
runningApplicationWithProcessIdentifier:pid
];
Y para imprimir la ruta del ejecutable:
NSLog(@"Executable of app: %@", app.executableURL.path);
el paquete de aplicaciones en sí está aquí
NSLog(@"Executable of app: %@", app.bundleURL.path);
Sin embargo, esto no funcionará con el sistema o los procesos en segundo plano, se limita a las aplicaciones de usuario (las que normalmente se ven en el dock después del lanzamiento). El objeto NSRunningApplication
permite verificar si la aplicación está activa, ocultarla / mostrarla y hacer todo tipo de cosas interesantes.
Sólo pensé que lo menciono aquí para completar. Si desea trabajar con procesos arbitrarios, la respuesta aceptada es, por supuesto, mejor.
Trate de usar lsof
ejemplo:
lsof -p 1066 -Fn | awk ''NR==2{print}'' | sed "s/n//////"
salida:
/Users/user/Library/Application Support/Sublime Text 2/Packages
Utilice este código para encontrar el psn de información de proceso.
A continuación, utilice la siguiente función para obtener la ubicación,
OSStatus GetProcessBundleLocation (const ProcessSerialNumber *psn, FSRef *location);