我正在寻求关于从shell脚本启动(java)程序的最佳实践的建议。在后台启动任务的shell启动脚本的返回代码
目前我们公司内部的做法似乎有一个shell脚本设置所有环境变量,并启动了Java(这并不重要,在这种情况下)过程的背景相似:
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1 &
这是脚本的最后一行。我们正在启动单一进程。
我有一个疑问就是,即使程序由于一些异常/错误而无法启动的情况下,此类shell进程的返回代码始终为0。这使监控工具变得很难 - 例如,他们不能依赖shell的退出代码。
我发现这可以通过等待进程结束等进行固定时:
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1 &
wait $!
但我的理解是,这使得最后&
完全无用的,因为运行:
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1
会具有相同的效果。
所以我的问题是:从shell启动程序的最佳做法是什么?背景上的跑步是否有一些我忽略的好处?