Ich weiß, dass ich die PID
für einen Prozess mit ps
bekommen kann, aber wie man den vollen Weg dieses Prozesses findet?Wie bekomme ich den vollständigen Pfad für einen Prozess unter OS X?
Antwort
OS X hat die Bibliothek libproc, die verwendet werden kann, um verschiedene Prozessinformationen zu sammeln. Um die absoluten Pfad für einen gegebenen PID, der folgende Code zu finden verwendet werden:
#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;
}
Beispiel zu kompilieren und laufen (über Code in pathfind.c gespeichert ist, ist 32291 die pid des Prozess ich versuche, für Pfadinformationen zu finden):
$ cc pathfind.c -o pathfind
$ ./pathfind 32291
proc 32291: /some/path/your-binary-app
siehe diesen Blog-Eintrag:http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid/
Einer Lösung sein kann usi ng which:
which `ps -o comm= -p $PID`
Wobei $ PID ist pid des Prozesses, den Sie überprüfen möchten. Getestet unter OS X 10.8.2.
Getestet auf 10.7.5 auch ... brillant. – Floris
Funktioniert auch auf 10.5, danke @tomis! – AnneTheAgile
Es scheint jedoch manchmal relative Pfade zurückzugeben. Hier ist der Test, den ich gemacht habe: '$> was \' ps -o comm = -p 81233 \ '=>./Ft_minishell2', ich meine, es ist kein vollständiger Pfad wie im absoluten Pfad. Ich weiß nicht, ob das der anfängliche Gedanke hinter der Frage war. Das ist Mavericks. – conradkdotcom
Try this:
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}')/exe
wo $ process_name Name des Prozesses ist es, Sie überprüfen möchten.
Es gibt keine/proc auf OS X ... – tomis
Haben Sie von 'osxfuse' gehört - Das Repository-Dateisystem enthält Quellcode für mehrere spannende und nützliche Dateisysteme zum Durchsuchen, Kompilieren und Erstellen von, wie sshfs, procfs, AccessibilityFS, usw. – ymn
Ich habe davon gehört (und benutze es), aber es ist nicht nativ da ... Viele Benutzer haben dies nicht installiert. – tomis
http://superuser.com/questions/103309/how-can-i-know-the-absolute-path-of-a-running-process –
mögliche Duplikate von [Get real Pfad der Anwendung von Pid?] (http://stackoverflow.com/questions/7511864/get-real-path-of-application-from-pid) – AlphaMale