通过bash脚本在循环中记录jar执行的异常

时间:2017-11-08 07:11:32

标签: bash shell

输入列表值 - a,b,c,d

这是我在循环中执行jar文件的bash脚本:

cd /myjarfilepath

for input in $list
do

java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 
done

当我使用输入" a"执行myApp.jar时 - 它因空指针异常而失败,并继续执行下一个输入" b"。在这里,我想记录" a"的空指针异常。在进入" b"。

之前

我尝试使用下面的代码获取退出状态,但它始终为0,即使进程包含异常。

my_status=$?
echo The exit status of the process was $my_status

任何帮助将不胜感激。 感谢。

3 个答案:

答案 0 :(得分:0)

您应该将stderr重定向到您的日志文件:

java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2>> all.log

或者您可以为每个输入文件创建单独的日志:

java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2> ${input}.log

注意:这只会将stderr重定向到文件。 stdout仍然会打印到终端。

答案 1 :(得分:0)

最简单的方法是将stderr重定向到日志文件,比如'/tmp/myjar.log'

结帐all about bash redirection

cd /myjarfilepath
LOG="/tmp/myjar.log"
for input in $list
do
 echo "processing $input" > $LOG
 java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 2>$LOG
done

答案 2 :(得分:0)

java -Xmx1024m -cp myApp.jar com.CommandLineRunner $input 1 

我确实将stdout重定向到了一个日志文件。这样就可以将stderr打印到终端了。

整个过程我通过jenkins工作来运行它。因此,终端中打印的错误日志可以作为构建日志文件收集并附在电子邮件中。