我的問題會有點難以解釋,所以請耐心等待。在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