尝试以 GREP 形式显示 Java 错误的详细信息

尝试以 GREP 形式显示 Java 错误的详细信息

我正在运行 Ubuntu 11,但在使用 grep 时遇到了一些问题。

我有一个 shell 脚本(见下文),它主要检查我的某个 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

答案1

由于异常记录在流中,因此您必须将stderror流的输出重定向到流。下面的代码片段可以过滤异常 strace 并打印最多 10 行。stdoutstderr

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

注意:您可以使用jps命令来查找 sun JVM 的 java 进程。您也可以尝试pidofpgrep命令或grep '[j]ava'(此命令不会列出其(grep)进程)。

相关内容