Encontre *onde* está o executável para um processo em execução no momento

Encontre *onde* está o executável para um processo em execução no momento

Se eu tiver 2 executáveis ​​( /path/to/gcc/myapp.exe, e /path/to/intel/myapp.exe) onde um é compilado com um compilador Intel e outro é compilado com o gcc padrão, a execução de ambos aparecerá topapenas como myapp. Se eu executar ambos e tiver processos em execução como myapp, existe uma maneira de descobrir qual processo vem de qual executável?

Temos vários aplicativos instalados em nosso cluster e estou interessado não apenas em quais aplicativos estão sendo mais usados, mas também em quais aplicativos estão sendo mais usados.versõesdos aplicativos estão sendo usados. Se eu vir 500 ocorrências de Rexecução, gostaria de saber se 100 delas são de /path/to/R-3.2.1/intel/Re as outras 400 são de /path/to/R-3.1.3/gcc/R, etc.

Responder1

Você pode fazer isso com o /procsistema de arquivos, conforme observado noproc(5)página de manual:

/proc/[pid]/exe

No Linux 2.2 e posterior, este arquivo é um link simbólico que contém o nome do caminho real do comando executado.

Porque é umligação simbólica, você pode ler oalvo(faça um ls -lpara ver o nome do caminho).

É [pid]claro que significa um ID de processo para o executável específico no qual você está interessado, em tempo de execução.

(É improvável que você tenha um sistema rodando um kernel Linux tão antigo, então "sempre funciona" deve ser suficiente).

Para obter uma contagem, você simplesmente precisa de um script que percorra /proccada diretório que você possui (já que você está executando os programas, você pode ver seus /procdados) e comparando os nomes de caminho com aqueles que você está interessado. OreadlinkO programa, por exemplo, é útil em scripts bash (e como faz parte do coreutils, você provavelmente o possui em um sistema Linux).

Responder2

Para fazer isso, você pode iniciar tope pressionar cno teclado para alternar a visualização do caminho completo.

Responder3

Se esses processos forem executados com uma linha de comando diferente (por exemplo, usando o caminho completo), você pode pressionar cpara mostrar/ocultar a linha de comando completa com a qual o processo foi executado.

informação relacionada