Jak mogę poznać bezwzględną ścieżkę uruchomionego procesu?
Jeśli mam wiele kopii tej samej aplikacji na dysku, a tylko jedna jest uruchomiona, jak widzę z ps
, jak mogę znać absolutną ścieżkę, aby odróżnić ją od innych?
Jeśli mam wiele kopii tej samej aplikacji na dysku, a tylko jedna jest uruchomiona, jak widzę z ps
, jak mogę znać absolutną ścieżkę, aby odróżnić ją od innych?
ps auxwwwe
Źródło: https://serverfault.com/questions/62322/getting-full-path-of-executables-in-ps-auxwww-output
lsof jest opcją. Możesz spróbować czegoś takiego jak poniżej:
lsof -p PROCESS_ID
Spowoduje to wylistowanie wszystkich plików otwartych przez proces, łącznie z faktyczną lokalizacją pliku wykonywalnego. Następnie możliwe jest dodanie kilku dodatkowych funkcji awk, cut, grep itp. w celu znalezienia informacji, których szukasz.
Jako przykład, wykonałem następujące polecenia, aby zidentyfikować skąd pochodzi mój proces ‘java’:
lsof -p 12345 | awk ‘{print $NF}’ | grep ‘java$’
Szybką odpowiedzią jest użycie ps
z opcjami lub info o systemie plików /proc
. To będzie 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, tak że nie ma ścieżki do pliku?
Zobacz the Unix FAQ dla nieco więcej szczegółów, szczególnie pytania 4.3 i 4.4.