Existe uma maneira de descobrir o local do diretório / disco em que um processo foi iniciado? Estou ciente da montagem / proc, mas não sou realmente onde procurar dentro dela.
Existe uma maneira de descobrir o local do diretório / disco em que um processo foi iniciado? Estou ciente da montagem / proc, mas não sou realmente onde procurar dentro dela.
Respostas:
A /proc
maneira seria inspecionar o exe
link 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'
Talvez which
seja o que você está procurando. Por exemplo, no meu sistema
which firefox
retorna
/usr/bin/firefox
Consulte também Localizar caminho do aplicativo em execução no Solaris, Ubuntu, Suse ou Redhat Linux .
which
é legal, mas só retorna programas em seu $ PATH. Se eu correr RandomProgramIDownloadedToErisKnowsWhere.bin
, isso não será muito útil.
Desde que você tenha um ID do processo disponível, você pode usar:
readlink -f /proc/$pid/exe
(substitua $pid
pelo ID do processo)
Se o processo não pertencer a você, você terá que colocá-lo sudo
na frente dele.
Um exemplo para determinar a localização do comando firefox
:
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
28179
é o ID do processo, então você deve executar:
readlink -f /proc/28179/exe
quais saídas:
/usr/bin/firefox
/proc/$pid/exe
, se o binário for excluído acidentalmente, você pode restaurá-lo com:dd if=/proc/$pid/exe of=restored-binary
Pressione Ctrl+ Alt+ Tpara ir para um terminal e digite:
ls -al /proc/{pid}/fd
e depois verifique a saída
Isso listará todos os arquivos aos quais seu processo está associado ...
Todos os comandos nas outras respostas são bons, mas você pode fazer ainda mais - vendo como algum processo foi realmente executado antes de chegar à lista de processos.
Execute no terminal:
top
E enquanto estiver em execução, pressione o teclado C
e você obterá um comando dos processos que foram executados.