Jeśli mam na dysku wiele kopii tej samej aplikacji i działa tylko jedna, jak widzę ps
, jak mogę poznać bezwzględną ścieżkę odróżniającą ją od innych?
93
% sudo ls -l /proc/PID/exe
na przykład:
% ps -auxwe | grep 24466 root 24466 0,0 0,0 1476 280? S 2009 0:00 nadzoruje sshd % sudo ls -l / proc / 24466 / exe lrwxrwxrwx 1 root root 0 lutego 1 18:05 / proc / 24466 / exe -> /package/admin/daemontools-0.76/command/supervise
ls
polecenie.ls: cannot read symbolic link /proc/28783/exe: Permission denied
- nie chodzi o uruchomieniels
polecenia, chodzi o dostęp do informacji o procesie, który nie należy do ciebie. Na moim urządzeniu około 97% wszystkich procesów wymienionych w / proc to procesy root, a pozostałe są rozmieszczone wśród 11 różnych użytkowników.Posługiwać się:
To daje ci bieżący katalog roboczy pid, a nie jego bezwzględną ścieżkę.
Zwykle
which
polecenie powie ci, która jest wywoływana z powłoki:źródło
$pid
?” Edytowany post nadal nie odpowiada na pytanie.which
mówi tylko „Jeśli polecenie jest na ścieżce, to co to jest?”pwdx
zwróć mi bezwzględną ścieżkę możliwego do wykonania programu procesu w zależności od pid na redhat x64 6.3.Jednym ze sposobów jest ps -ef
źródło
Źródło:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
źródło
Szybką odpowiedzią jest użycie
ps
opcji lub/proc
informacji o systemie plików. To zwykle działa, ale nie jest gwarantowane. Ogólnie rzecz biorąc, nie ma jednoznacznej, gwarantowanej odpowiedzi. Na przykład, co jeśli plik wykonawczy zostanie usunięty podczas wykonywania, aby nie było ścieżki do pliku?Zobacz Unix FAQ, aby uzyskać więcej szczegółów, w szczególności pytania 4.3 i 4.4.
źródło
Dlaczego wszyscy oczekują, że znasz PID? Oto przyjazny dla człowieka sposób:
źródło
ps
”, więc prawdopodobnie wyświetli PIDlsof jest opcją. Możesz spróbować czegoś takiego:
lsof -p PROCESS_ID
Spowoduje to wyświetlenie listy wszystkich plików otwartych przez proces, w tym faktycznej lokalizacji pliku wykonywalnego. Następnie można dodać jeszcze kilka awk, cut, grep itp., Aby znaleźć informacje, których szukasz.
Jako przykład wykonałem następujące polecenia, aby ustalić, skąd pochodzi mój proces „java”:
lsof -p 12345 | awk „{print $ NF}” | grep „java $”
źródło
Możesz użyć
lub
uzyskać absolutną ścieżkę. PID to proces.
źródło