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.