我正在尋求關於從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啓動程序的最佳做法是什麼?背景上的跑步是否有一些我忽略的好處?