Come posso determinare il percorso di un binario di un processo?


30

C'è un modo per scoprire la directory / posizione del disco da cui è stato avviato un processo? Sono a conoscenza del mount / proc, ma non proprio dove guardarlo al suo interno.


1
Intendi la posizione del file binario o la directory da cui è iniziato un processo?
Lekensteyn,

Scusate per l'ambiguità, intendo il binario
SuperJumbo,

Risposte:


37

Il /procmodo sarebbe quello di ispezionare il execollegamento nella directory corrispondente al pid.

Facciamo un esempio con update-notifier:

Trova il pid, che è 15421 in questo esempio:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

Cerca il link simbolico:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

Oh sì, ero quasi lì. Leggenda, grazie.
SuperJumbo,


6

Se disponi di un ID processo disponibile, puoi utilizzare:

readlink -f /proc/$pid/exe

(sostituisci $pidcon l'ID processo di un processo)

Se il processo non è di tua proprietà, dovrai metterlo sudodi fronte.

Un esempio per determinare la posizione del comando firefox:

  1. L'output di ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 è l'ID del processo, quindi devi eseguire:

    readlink -f /proc/28179/exe
    

    che produce:

    /usr/bin/firefox
    

2
Puoi fare cose interessanti con /proc/$pid/exe, se il binario viene accidentalmente cancellato, puoi ripristinarlo con:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Premi Ctrl+ Alt+ Tper andare a un terminale e digitare:

ls -al /proc/{pid}/fd  

e quindi controllare l'output

Verranno elencati tutti i file a cui è associato il processo ...


Potresti per favore rivedere le mie modifiche e anche rivedere l' aiuto di modifica per migliorare la leggibilità delle tue risposte in futuro ... ;-)
Fabby

0

Tutti i comandi nelle altre risposte sono buoni, ma potresti fare ancora di più - vedendo come alcuni processi sono stati effettivamente eseguiti prima che arrivassero all'elenco dei processi.

Esegui nel terminale:

top

E mentre è in esecuzione, premi la tastiera Ce otterrai un comando dei processi che sono stati eseguiti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.