Parece que você está procurando uma solução centralizada em Linux em vez de uma solução portátil. No Linux, a maneira fácil, eficiente e confiável de obter as informações que você precisa do Java é usar o sistema de arquivos proc , e especialmente o diretório /proc/self . A página man 5 proc descreve cada arquivo.
O pid é o primeiro campo de /proc/self/stat . O nome da imagem é o segundo.
É muito fácil escrever uma aula para agrupar essas chamadas. Serão apenas algumas linhas de código que fazem IO básico: rápido e robusto. Usar programas de terceiros é mais difícil de acertar e menos eficiente.
Esta solução não é portátil, já que a maioria dos sistemas Unix não possui um sistema de arquivos proc . Você tem quatro opções do melhor para o pior, IMHO:
- Capture as informações necessárias antes de iniciar o processo: pode ser fácil ou não, dependendo do seu aplicativo
- Encontre limpo & implementações específicas do sistema, como o sistema de arquivos
proc para Linux
- Use uma API não especificada.
RuntimeMXBean.getName() geralmente retorna o pid , você também pode usar a reflexão para obter acesso a java.lang.UnixProcess.pid . A implementação pode diferir entre a JVM e pode mudar a qualquer momento. Soluções aceitáveis se você controlar o ambiente.
- Escreva código nativo para acessar a API POSIX
- Use ferramentas externas como
ps
Se você decidir confiar em ferramentas externas, deve ter muito cuidado com a portabilidade (as opções e a saída podem diferir muito entre dois sistemas operacionais) e as configurações de localidade.