Como eu determino o caminho para um binário de um processo?

22

Existe uma maneira de descobrir a localização do diretório / disco em que um processo foi iniciado? Estou ciente da montagem / proc mas não é realmente onde procurar dentro dela.

    
por SuperJumbo 16.06.2011 / 12:47

3 respostas

27

A maneira /proc seria inspecionar o link exe no diretório correspondente ao pid.

Vamos dar um exemplo com update-notifier :

Encontre o pid, que é 15421 neste exemplo:

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

Procure o link simbólico:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to '/usr/bin/update-notifier'
    
por Egil 16.06.2011 / 12:56
11

Talvez which seja o que você está procurando. Por exemplo, no meu sistema

which firefox 

retorna

/usr/bin/firefox

Veja também Encontre o caminho do aplicativo em execução no Solaris, Ubuntu, Suse ou Redhat Linux .

    
por N.N. 16.06.2011 / 12:51
3

Se você tiver uma ID de processo disponível, poderá usar:

readlink -f /proc/$pid/exe

(substitua $pid pelo ID do processo de um processo)

Se o processo não pertence a você, você precisará colocar sudo na frente dele.

Um exemplo para determinar a localização do comando firefox :

  1. A saída de ps ax -o pid,cmd | grep firefox :

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 é o ID do processo, por isso você precisa executar:

    readlink -f /proc/28179/exe
    

    quais saídas:

    /usr/bin/firefox
    
por Lekensteyn 16.06.2011 / 12:57

Tags