Попытка GREP-детали ошибки Java

Я использую Ubuntu 11 и у меня есть некоторые проблемы с grep.

У меня есть сценарий оболочки (см. Ниже), который по существу проверяет, запущена ли определенная моя программа на Java, если нет, то она ее запускает. Эта часть работает отлично!

Если мое Java-приложение выдает какое-либо исключение, я бы хотел получить эту информацию и отправить ее себе по электронной почте. Как я могу проверить, не происходит ли вызов java -jar /bin/MyApp.jar? Я попытался передать его в grep, но это не сработало.

Ниже приведен полный сценарий, который я написал:

#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
0
задан 20 June 2012 в 18:49

1 ответ

Вы должны перенаправить вывод потока stderror в поток stdout, так как исключения регистрируются в потоке stderr. Приведенный ниже фрагмент может фильтровать строку исключений и печатать до 10 следующих строк.

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

Примечание. Вы можете использовать команду jps, чтобы найти процесс Java для Sun JVM. Вы также можете попробовать команды pidof или pgrep или grep '[j]ava' (эта команда также не перечисляет процесс (grep)).

0
ответ дан 20 June 2012 в 18:49

Другие вопросы по тегам:

Похожие вопросы: