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.
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?
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.
Tags process