Como saber o caminho de um executável em execução?

1

Estou trabalhando em um servidor Linux e executando diferentes tarefas em nós diferentes.

No entanto, ao compilar meu programa, eu não defini seu nome específico, então eles são todos a.out

Agora encontrei um dos a.out em execução, pode não estar certo e querer terminar. Mas o comando Top não mostra o caminho para o executável.

Como fazer isso?

    
por user15964 08.04.2016 / 03:20

2 respostas

3

Você pode usar lsof (disponível para praticamente qualquer variante do Unix, mas muitas vezes não faz parte da instalação padrão ) para listar todos os arquivos que um processo está usando. “Usando” inclui descritores de arquivos abertos, bem como conceitos relacionados, como o executável que o processo está executando. O executável tem txt na coluna FD, para obscuros .

$ lsof -p1234 | grep txt
a.out    1234 user15964  txt   REG  253,0  34567 /path/to/a.out

(resultado inventado)

No Solaris e Linux, há uma maneira mais direta: o proc filesystem fornece informações sobre cada processo, incluindo qual executável está sendo executado. (No Linux, pelo menos, é onde lsof obtém suas informações.)

$ ls -l /proc/1234/exe
lrwxrwxrwx 1 root root 0 Feb 30 34:56 /proc/1234/exe -> /path/to/a.out

Se você está procurando um processo em execução um determinado executável, execute fusor .

$ fuser /path/to/a.out
/path/to/a.out: 1234e 1239e
    
por 09.04.2016 / 02:51
5

Não há resposta geral. No Linux moderno, você pode procurar em /proc/$PID , em que $PID é o ID do processo numérico. Você pode tirá-lo da saída top .

ls -l /proc/$PID/exe mostrará para onde exe é um link simbólico. Esse é o caminho completo para o executável a.out .

    
por 08.04.2016 / 03:48