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?
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?
Odpowiedzi:
% 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: cannot read symbolic link /proc/28783/exe: Permission denied
- nie chodzi o uruchomienie ls
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ę:
pwdx $pid
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:
#> which vlc
/usr/bin/vlc
$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
ps auxwwwe
Źródło:
https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
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.
lsof 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 $”
ls
polecenie.