シェル スクリプトから (Java) プログラムを起動するベスト プラクティスに関するアドバイスを求めています。
現在、私たちの会社では、すべての環境変数を設定し、次のようなバックグラウンドで Java (この場合は重要ではありません) プロセスを起動するシェル スクリプトを使用しているようです。
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1 &
これはスクリプトの最後の行です。単一プロセスを開始しています。
私が持っている1つの疑問は、そのようなシェルプロセスの戻りコードは、例外/エラーのためにプログラムが起動に失敗した場合でも常に0であるということです. これにより、ツールの監視が困難になります。たとえば、ツールはシェルの終了コードに依存できません。
これは、プロセスが次のように終了するのを待つことで修正できることがわかりました。
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1 &
wait $!
しかし、私の理解では、これにより、&
実行してから最後が完全に役に立たなくなるということです:
nohup $JAVA_CMD > $LOG_DIR/$LOG_FILE 2>&1
同じ効果があります。
私の質問は、シェルからプログラムを起動するベストプラクティスは何ですか? バックグラウンドでの実行には、見落としている利点がありますか?