Tentativa de detalhes do GREP de um erro de Java

0

Estou executando o Ubuntu 11 e estou tendo alguns problemas com o grep.

Eu tenho um script de shell (veja abaixo) que essencialmente verifica se um certo programa Java meu está rodando, se não rodá-lo. Essa parte funciona muito bem!

Se meu aplicativo Java lançar algum tipo de exceção, no entanto, gostaria de capturar essas informações e enviá-las por e-mail para mim mesmo. Como posso verificar se a chamada para java -jar /bin/MyApp.jar falha? Eu tentei piping-lo para grep, mas isso não parece funcionar.

Abaixo está o script completo que escrevi:

#Check if MyApp.jar is running, if not run it.
if [ $(ps aux | grep 'java' | grep -v grep | wc -l | tr -s "\n") -eq 0 ]
then
echo "PacketCapture Starting...\n"
java -jar /bin/MyApp.jar
echo "PacketCapture Started.\n"
else
echo "PacketCapture already running.\n"
fi
    
por BOMEz 20.06.2012 / 16:49

1 resposta

2

Você precisa redirecionar a saída de stderror stream para stdout stream, pois as exceções são registradas em stderr stream. O snippet abaixo pode filtrar o strace de exceção e imprimir até 10 linhas a seguir.

$ java -jar /bin/MyApp.jar 2>&1 | grep "^Exception" -A10

Nota: Você pode usar o comando jps para localizar o processo java para a Sun JVM. Você também pode tentar os comandos pidof ou pgrep ou grep '[j]ava' (este também não listará seu processo (grep)).

    
por Prince John Wesley 20.06.2012 / 17:59