【发布时间】:2017-11-23 14:39:02
【问题描述】:
我的问题会有点难以解释,所以请多多包涵。
我正在尝试编写一个将 Java HTTPServer 作为后台进程启动的 shell 脚本。脚本中的相关行看似很简单:
java -jar "$jar.jar" &
但是,我需要以某种方式检查 Java 尝试运行 jar 时是否存在问题。例如,如果我要去touch Server.jar,我想捕捉 java 无法运行那个空 jar。所以,我试图把它包装在一个 if 语句中:
if ! java -jar "$jar.jar" &
then
echo "Couldn't start server" >&2
fi
这不起作用。无论 java 是否真的能够运行jar,返回的状态都是相同的。我注意到,如果我在最后省略与号,它会在 jar 不好的情况下执行我想要的操作。但是,这显然会导致脚本在该行等待,直到 jar 正常时服务器停止,因此无法将进程发送到后台。
有没有什么简单的方法可以做到这一点?
【问题讨论】:
-
不,不是。如果进程正在运行,则还没有退出代码。当您将进程置于后台时,立即退出代码始终为 0。
标签: java bash http server background-process