我的问题会有点难以解释,所以请耐心等待。在shell脚本中启动Java HTTP服务器的状态
我想写一个shell脚本,它将启动一个Java HTTPServer
作为后台进程。在脚本中的相关行是看似很简单:
java -jar "$jar.jar" &
不过,我需要以某种检查,有没有问题,当Java的尝试运行jar。例如,如果我是touch Server.jar
,我想捕获java运行那个空罐子的失败。所以,我试图把它包装在一个if语句中:
if ! java -jar "$jar.jar" &
then
echo "Couldn't start server" >&2
fi
这是行不通的。不管java是否真的能够运行jar
,返回的状态都是一样的。我注意到如果我最后忽略了&符号,它会在jar
不好的情况下执行我想要的操作。但是,这显然会导致脚本在该行上等待,直到该jar文件良好时停止服务器,因此无法将该进程发送到后台。
有没有简单的方法来完成这个?
没有,真的没有。如果进程正在运行,那么还没有退出代码。在后台放置进程时,立即退出代码始终为0. – Jack