Jak określić ścieżkę do pliku binarnego procesu?

30

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ć.

SuperJumbo
źródło
1
Czy masz na myśli lokalizację pliku binarnego lub katalog, z którego rozpoczął się proces?
Lekensteyn,
Przepraszam za dwuznaczność, mam na myśli plik binarny
SuperJumbo

Odpowiedzi:

37

/procSposobem byłoby skontrolować exelinku 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'
Egil
źródło
O tak, byłem prawie na miejscu. Legenda, dziękuję.
SuperJumbo,
6

Pod warunkiem, że masz dostępny identyfikator procesu, możesz użyć:

readlink -f /proc/$pid/exe

(zastąp $pididentyfikatorem procesu)

Jeśli proces nie jest twoją własnością, musisz go postawić sudoprzed nim.

Przykład określania położenia polecenia firefox:

  1. Wyjście ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 jest identyfikatorem procesu, więc musisz uruchomić:

    readlink -f /proc/28179/exe
    

    które wyjścia:

    /usr/bin/firefox
    
Lekensteyn
źródło
2
Możesz robić fajne rzeczy /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
Lekensteyn
1

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 ...

xiaoyifang
źródło
Czy mógłbyś przejrzeć moje zmiany, a także przejrzeć pomoc w edytowaniu, aby poprawić czytelność twoich odpowiedzi w przyszłości ... ;-)
Fabby
0

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ę, Ca otrzymasz polecenie uruchomionych procesów.

Aleks
źródło