Inicie o processo java e monitore após 10 segundos

1

Eu gostaria de iniciar um processo java ... e, em seguida, verificar se ele ainda está em execução após 10 segundos de um script bash.

Existe uma maneira fácil de fazer isso?

    
por DD. 28.03.2012 / 18:47

5 respostas

3

Você pode fazer isso um pouco melhor usando $! para obter o PID do último comando executado e usando kill -0 para verificar se ainda está em execução.

#!/bin/sh
java &
PID=$!
sleep 10
if kill -0 $PID; then
    echo "running"
else
    echo "not running"
fi
    
por 28.03.2012 / 21:35
1

Im surpreso ninguém mencionou "jps". Experimente!

    
por 28.03.2012 / 22:04
0

bem, crie um arquivo chamado something.sh, substitua program com o nome do seu programa:

java -jar program
sleep 10
ps aux| grep program

Se a saída estiver vazia, ela parou de funcionar. Inicie com sh something.sh.

    
por 28.03.2012 / 19:31
0

Salve o ID do processo do processo Java que você criou (chame-o imediatamente).

PID = $ (pgrep -n java | head -n 1)

Mais tarde, use a pesquisa de processos para localizar usando o PID

ps --no-headers $PID

neste ponto, se $? for 0, o processo ainda estará em execução. Se for 1, o processo foi encerrado.

    
por 28.03.2012 / 19:31
0

Obrigado pela sua pergunta. Você pode querer dar uma olhada no exemplo de script a seguir e ver se é isso que você precisa:

#!/bin/sh
MYPROCESS='your-java-process'
if ($(ps aux | grep $MYPROCESS | grep -v “grep $MYPROCESS″ | wc -l) > 0)
then
echo "$MYPROCESS service running, everything is fine" >
else
echo "$MYPROCESS is not running"
fi

A declaração "if" abaixo verifica se o processo está sendo executado com a ajuda do comando "ps". Na instrução if, "ps aux" lista os processos em execução atuais. A próxima seção descobre o seu processo, então eliminamos o processo do grep da lista obtida de seus processos e, finalmente, contamos o número de instâncias. Se esse resultado for maior que zero, seu processo está em execução, senão não.

Espero que isso ajude ...

    
por 28.03.2012 / 19:37

Tags