Czy istnieje sposób na znalezienie lokalizacji katalogu / dysku, od którego uruchomiono proces? Zdaję sobie sprawę z zamontowania / proc, ale tak naprawdę nie wiem, gdzie w nim zajrzeć.
Czy istnieje sposób na znalezienie lokalizacji katalogu / dysku, od którego uruchomiono proces? Zdaję sobie sprawę z zamontowania / proc, ale tak naprawdę nie wiem, gdzie w nim zajrzeć.
Odpowiedzi:
/proc
Sposobem byłoby skontrolować exe
linku w katalogu odpowiadającym PID.
Weźmy przykład z update-notifier
:
Znajdź pid, który w tym przykładzie wynosi 15421 :
egil@gud:~$ ps x | grep update-notifier
2405 pts/4 S+ 0:00 grep update-notifier
15421 ? Sl 0:00 update-notifier
Wyszukaj symboliczny link:
egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'
Może which
jest to, czego szukasz. Na przykład w moim systemie
which firefox
zwraca
/usr/bin/firefox
Zobacz także Znajdź ścieżkę aplikacji działającej w systemie Solaris, Ubuntu, Suse lub Redhat Linux .
which
jest fajny, ale zwraca tylko programy z twojej $ PATH. Jeśli uruchomię RandomProgramIDownloadedToErisKnowsWhere.bin
, nie przyda się to zbytnio.
Pod warunkiem, że masz dostępny identyfikator procesu, możesz użyć:
readlink -f /proc/$pid/exe
(zastąp $pid
identyfikatorem procesu)
Jeśli proces nie jest twoją własnością, musisz go postawić sudo
przed nim.
Przykład określania położenia polecenia firefox
:
Wyjście ps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
jest identyfikatorem procesu, więc musisz uruchomić:
readlink -f /proc/28179/exe
które wyjścia:
/usr/bin/firefox
/proc/$pid/exe
, jeśli plik binarny zostanie przypadkowo usunięty, możesz go przywrócić za pomocą:dd if=/proc/$pid/exe of=restored-binary
Naciśnij Ctrl+ Alt+, Taby przejść do terminala i wpisz:
ls -al /proc/{pid}/fd
a następnie sprawdź dane wyjściowe
Spowoduje to wyświetlenie wszystkich plików, z którymi proces jest powiązany ...
Wszystkie polecenia w pozostałych odpowiedziach są dobre, ale możesz zrobić jeszcze więcej - sprawdzając, jak pewien proces został faktycznie uruchomiony, zanim trafił na listę procesów.
Uruchom w terminalu:
top
Kiedy jest uruchomiony, naciśnij klawiaturę, C
a otrzymasz polecenie uruchomionych procesów.