
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á top
apenas 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 R
execução, gostaria de saber se 100 delas são de /path/to/R-3.2.1/intel/R
e as outras 400 são de /path/to/R-3.1.3/gcc/R
, etc.
Responder1
Você pode fazer isso com o /proc
sistema 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 -l
para 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 /proc
cada diretório que você possui (já que você está executando os programas, você pode ver seus /proc
dados) e comparando os nomes de caminho com aqueles que você está interessado. Oreadlink
O 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 top
e pressionar c
no 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 c
para mostrar/ocultar a linha de comando completa com a qual o processo foi executado.