Determine quais aplicativos java estão sendo executados no nome do processo java

2

Estou escrevendo um Built System for Sublime Text 3 para teste de unidade JavaScript. Estou usando o js-test-driver como minha estrutura de teste. Sublime Text só pode executar um comando, então estou usando um script bash para fazer o trabalho. js-test-driver é um aplicativo java e gostaria de poder testar se já está em execução. Tanto quanto eu posso dizer, o nome do processo é apenas java . Existe alguma maneira de descobrir quais aplicativos java estão sendo executados dentro do processo java ? Se não, como posso testar se um aplicativo java específico está em execução?

    
por DudeOnRock 01.04.2014 / 01:57

2 respostas

1

Você pode usar o comando jps :

jps | grep "[0-9][0-9]* js-test-driver"

No entanto, pode não ser chamado js-test-driver , pode ser algo como js-test-driver.jar . Tente ver a saída de apenas jps primeiro.

    
por 01.04.2014 / 02:09
0

Com o procps-ng ps (deve ser padrão na maioria dos sistemas Linux), você pode usar a opção -C para limitar a saída a comandos de um nome específico. O mais provável js-test-driver estará em algum lugar nos argumentos do comando. Você pode listar todos os argumentos para executar java processos com:

ps -C java -o args=

Para testar js-test-driver em qualquer lugar na lista de argumentos, você poderia fazer:

ps -C java -o args= | grep -q js-test-driver &&
  echo 'js-test-driver running'

Você também pode usar pgrep , o equivalente ao acima seria:

pgrep -f js-test-driver >/dev/null && echo 'js-test-driver running'

Observe que, se o motivo pelo qual você está verificando se o processo está em execução é evitar que o script inicie dois ao mesmo tempo, há abordagens mais robustas que evitam possíveis condições de corrida. Veja minha resposta aqui para ver um exemplo de uma abordagem de arquivo de bloqueio.

    
por 01.04.2014 / 02:31

Tags