Tente isto:
ls -l /proc/8505/exe
Ou se você não quiser analisar a saída de ls
, faça:
readlink /proc/8505/exe
ou
realpath /proc/8505/exe
Eu tenho um processo xmms2d
em execução, mas dois arquivos executáveis possíveis (em diretórios diferentes, ambos no caminho do executável) que poderiam gerá-lo. Eu suspeito que um deles está corrompido, porque às vezes este programa funciona e às vezes não. O processo rodando agora funciona, então eu quero deletar (ou renomear) o outro.
ps ax|grep "xmms"
retorna 8505 ? SLl 2:38 xmms2d -v
sem informações de caminho. Dado o PID, posso descobrir se foi executado a partir de /usr/bin/xmms2d
ou /usr/local/bin/xmms2d
?
Obrigado!
Se você estiver executando o Solaris, o caminho é um pouco diferente do sugerido pelo Linux:
$ for i in $(pgrep bash)
do
printf "%6d %s\n" $i $(readlink /proc/$i/path/a.out)
done
577 /usr/bin/bash
11247 /usr/bin/bash
13921 /usr/bin/bash
13992 /tmp/bash
Se você quiser conhecer o diretório de trabalho atual dos processos em execução, use:
pwdx $(pgrep xmms)
por exemplo:
$ pwdx $(pgrep ksh)
2904: /home/jlliagre
2906: /home/jlliagre
3844: /tmp
Eu inicio o mousepad a partir do shell:
mousepad &
[1] 24289
verifique de onde vem:
which mousepad
/usr/bin/mousepad
inicie com o caminho:
/usr/bin/mousepad &
procure por ps:
ps v -C mousepad
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
24289 pts/3 S 0:00 3 62 85441 10964 1.0 mousepad
24292 pts/3 S 0:00 0 62 85433 10864 1.0 /usr/bin/mousepad
Como vemos, o que foi invocado sem caminho é exibido sem caminho e iniciado com o PATH e, portanto, encontrado por
which mousepad
Simples assim, não é?
Esperar!
E se eu começar o mousepad no menu? Bem, pode ser especificado com ou sem o uso das configurações do PATH. Eu tentei.
Um início normal leva a um simples 'mousepad' em ps v -C
. Como ~ / bin é a primeira parte do meu PATH, eu crio um manequim lá e, voila, o manequim é iniciado a partir do menu.
Mas e se você iniciar um programa que se apaga? Que não encontrará o programa deletado e reportará um erro errado, se houver um segundo no caminho.
Então essa é uma condição de corrida. Se você sabe que seus programas não são excluídos ou não são movidos enquanto você está investigando a localização deles, ps v -C NAME
e which NAME
devem funcionar muito bem.
Vá em frente e exclua ambos os arquivos (sem a opção force -f). O arquivo que é deletado é o que não estava rodando !!
O bloqueio de arquivos executáveis do sistema não permitirá que você exclua nenhum arquivo que esteja atualmente em execução.
Tags process