Unix shell脚本捕获Java进程错误?

发布于 2024-12-05 08:46:40 字数 121 浏览 0 评论 0原文

目前我们有一个 shell 脚本,它执行 Java 类并使用 2>&1 将输出重定向到单个文件。我想在Java类执行后捕获Unix shell中的输出并查找是否有任何错误。可以在不检查输出文件的情况下完成此操作吗?

Currently we have a shell script that executes a Java class and redirects the output to a single file using 2>&1. I want to trap the output in the Unix shell after the Java class execution and find if there are any errors. Can this be done without checking the output file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

溺孤伤于心 2024-12-12 08:46:40

一种选择是将错误输出从标准输出发送到单独的文件;那么你只需要查看错误文件是否为空。如果它为空,则不会向 stderr 报告任何错误(遗憾的是,这并不能保证不会向 stdout 报告错误,但这是 Java 程序的 QoI(实现质量)问题)。

您还可以查看 Java 程序的退出状态。成功时它可能会以零状态退出,失败时可能会以非零状态退出。但是,它可能会向 stderr 报告错误并仍然成功退出。

根据 Java 进程的作用,您也许能够使用 shell 使用 $(...) 或反引号在变量中捕获的输出来运行它。然后,您可以扫描变量(而不是文件)以查明是否出现问题。

One option is to send the error output to a separate file from the standard output; then you only have to look and see whether the error file is empty or not. If it's empty, no errors were reported to stderr (which, sadly, does not guarantee that errors were not reported to stdout, but that's a QoI (quality of implementation) issue for the Java program).

You might also look at the exit status of the Java program. It will likely exit with a zero status on success and may exit with a non-zero status on failure. However, it might report errors to stderr and still exit successfully.

Depending on what the Java process does, you might be able to run it with the output captured in a variable by the shell using $(...) or backticks. You'd then scan the variable (instead of a file) to find out whether anything went wrong.

灯角 2024-12-12 08:46:40

您可以使用 tee:

myscript.sh 2>&1 | tee logfile

这会将脚本的所有输出(stdout 和 stderr)打印到 stdout 和日志文件。

You can use tee:

myscript.sh 2>&1 | tee logfile

This will print all the output of your script (both stdout and stderr) to stdout and also to the logfile.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文