wiem, że mogę dostać PID
dla procesu za pomocą ps
, ale jak za znaleźć pełną ścieżkę tego procesu?Jak uzyskać pełną ścieżkę dla procesu na OS X?
Odpowiedz
OS X zawiera bibliotekę libproc, która może służyć do zbierania różnych informacji o procesach. W celu znalezienia bezwzględną ścieżkę dla danego PID następujący kod może być użyty:
#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;
}
przykład kompilowania i bieg (powyżej kod jest przechowywany w pathfind.c, 32291 jest PID proces Próbuję znaleźć informacje na ścieżkę):
$ cc pathfind.c -o pathfind
$ ./pathfind 32291
proc 32291: /some/path/your-binary-app
sprawdź na tym blogu:http://astojanov.wordpress.com/2011/11/16/mac-os-x-resolve-absolute-path-using-process-pid/
Jednym z rozwiązań może być usi ng:
which `ps -o comm= -p $PID`
Gdzie $ PID to pid procesu, który chcesz sprawdzić. Testowane w systemie OS X 10.8.2.
Testowany także na 10.7.5 ... genialny. – Floris
Działa również na 10,5, dzięki @tomis! – AnneTheAgile
Czasami wydaje się, że powraca względne ścieżki. Oto test, który zrobiłem: '$> który \' ps -o comm = -p 81233 \ '=>./Ft_minishell2', to znaczy, nie jest to pełna ścieżka, jak w absolutnej ścieżce. Nie wiem, czy to było początkowe myślenie za tym pytaniem. To jest Mavericks. – conradkdotcom
Spróbuj tego:
sudo ls -l /proc/$(ps -e | grep $PROCESS_NAME | awk '{print $1}')/exe
gdzie $ PROCESS_NAME jest nazwa procesu chcesz sprawdzić.
Nie ma/proc na OS X ... – tomis
Czy słyszał o 'osxfuse' - repozytorium systemu plików zawiera kod źródłowy dla kilku systemów plików ekscytujące i użyteczne dla przeglądanie, kompilacji i czerpać, jak sshfs, procfs, AccessibilityFS, itp. – ymn
Słyszałem o tym (i używam go), ale nie jest tam natywnie ... Wielu użytkowników nie ma tego zainstalowanego. – tomis
http://superuser.com/questions/103309/how-can-i-kolute-the-absolute-path-of-a-running-process –
możliwy duplikat [Uzyskaj prawdziwą ścieżkę aplikacji z pid?] (http://stackoverflow.com/questions/7511864/get-real-path-of-application- from-pid) – AlphaMale