我正在嘗試使用以下nohup命令運行 java springboot 服務器。
nohup java -jar webservices-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 &
但是在運行這個之后,我得到了以下輸出并且我必須按回車鍵才能運行后續命令。
$ nohup java -jar -Dspring.config.additional-location=config/application-dev.properties webservices-0.0.1-SNAPSHOT.jar
無論如何在bash中避免這種情況?
uj5u.com熱心網友回復:
看起來您set -x打開了 shell 除錯跟蹤(模式),這意味著 bash 將在執行每個命令之前列印它(但在擴展變數等之后)。由于該nohup java ...命令是后臺運行的,因此這是異步發生的,并且恰好在 shell 列印其提示符后被$ 列印,因此您得到“ ”(您的 shell 提示符)后跟“” nohup java ...(除錯跟蹤)。
(注意:重定向到 nohup.out 的命令有錯誤和輸出,但由于跟蹤是由 shell 列印的,而不是命令本身,重定向不適用。)
此時您實際上不需要按回車鍵;按下回車鍵唯一能做的就是給你一個新的、干凈的(不與除錯跟蹤混合)提示。您可以正常輸入另一個命令。但是,由于 shell 對您所在的位置感到困惑,因此命令編輯和歷史呼叫等功能可能無法正常作業。
如果你想避免這種情況,我認為你的主要選擇是在運行命令之前關閉除錯跟蹤(set x),或者在 shell 列印下一個提示之前添加延遲:
nohup java -jar webservices-0.0.1-SNAPSHOT.jar > nohup.out 2>&1 & sleep 1
在這里,nohup java ...命令像往常一樣在后臺運行,但sleep 1命令在前臺運行,因此 shell 一秒鐘內不會列印下一個提示符(這應該足夠讓后臺行程列印其除錯跟蹤)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/493706.html
