Bash忽略从Java应用程序退出
我有一个简单的BASH脚本,它包装了一个java程序,目的是在应用程序崩溃时重新启动它:Bash忽略从Java应用程序退出,java,bash,shell,Java,Bash,Shell,我有一个简单的BASH脚本,它包装了一个java程序,目的是在应用程序崩溃时重新启动它: STOP=0 while [ "$STOP" -eq 0 ] do echo "Starting" exec java com.site.app.Worker echo "Crashed" sleep 3 done 但是,如果Java进程退出,它也会退出bash脚本,因此该进程将不再启动 例如(指向假课堂): 是否有办法捕获错误(但仍显示错误
STOP=0
while [ "$STOP" -eq 0 ]
do
echo "Starting"
exec java com.site.app.Worker
echo "Crashed"
sleep 3
done
但是,如果Java进程退出,它也会退出bash脚本,因此该进程将不再启动
例如(指向假课堂):
是否有办法捕获错误(但仍显示错误)以允许脚本继续运行?删除
exec
。这将用JavaVM完全取代当前进程(您的shell)
只要删除它,它就会正常工作。删除
exec
。这将用JavaVM完全取代当前进程(您的shell)
只要删除它,它就会正常工作。正如Mat所说,exec所做的就是用Java进程替换当前的shell进程。如果失败了,没有人等着它重新启动exec是一个非常有用的专业工具,但它相当先进 正确使用它的一个例子是,在当前shell中设置变量或优先级的脚本,然后在正在包装的流程中执行exec 似乎没有使用变量“STOP”。我只想说:
while ! java com.site.app.Worker
do
echo Failed: Sleeping and restarting >&2
sleep 3
done
正如Mat所说,exec所做的是用Java进程替换当前的shell进程。如果失败了,没有人等着它重新启动exec是一个非常有用的专业工具,但它相当先进 正确使用它的一个例子是,在当前shell中设置变量或优先级的脚本,然后在正在包装的流程中执行exec 似乎没有使用变量“STOP”。我只想说:
while ! java com.site.app.Worker
do
echo Failed: Sleeping and restarting >&2
sleep 3
done
bash文件在哪里?从哪里编译类?bash文件在哪里?你从哪里编的课?