概要:
本文旨在介紹一種高效的Linux命令組合,用于簡化Spring Boot項目的部署與管理流程。通過結合使用nohup
、java -jar
、輸出重定向以及進程管理命令,我們能夠實現Spring Boot應用的快速后臺啟動及便捷的進程控制,尤其適合于自動化部署腳本或日常運維操作。
1.start.sh
nohup java -jar current.jar >/null &
-
nohup
:是"No hang up"的縮寫,它的作用是在運行命令之后忽略所有的掛斷(HUP)信號。這意味著即使你關閉了終端或者斷開了SSH連接,這個命令及其啟動的進程仍然會在后臺繼續運行。 -
java -jar current.jar
:這是啟動Java應用程序的基本命令。java
是Java運行時環境的可執行文件,-jar
選項告訴Java直接從指定的JAR文件(這里是current.jar
)加載JavaManifest文件并執行主類,從而啟動應用程序。 -
>
:輸出重定向符號,用于將原本輸出到屏幕的標準輸出(STDOUT)內容重定向到另一個地方。 -
/null
:在這個場景中,它試圖將標準輸出重定向到一個名為null
的文件,但實際上在大多數Unix/Linux系統中,/dev/null
是一個特殊的文件,用于丟棄一切寫入其中的數據,因此這里的目的是丟棄Java程序的標準輸出信息,讓程序安靜地在后臺運行,不產生任何輸出日志。 -
&
:這個符號放在命令的末尾,意味著將命令放到后臺執行。當你在命令行輸入以&
結尾的命令后,shell會立即返回提示符,允許你在同一終端進行其他操作,而命令會在后臺繼續運行。
2.stop.sh
ps -ef |grep "current.jar" |grep -v grep |awk '{print $2}'|xargs kill -9
這行命令是Linux/Unix shell腳本中用于查找并殺死名為"current.jar"的Java進程的常用命令組合
-
ps -ef
:這個命令用于列出系統中所有正在運行的進程的信息。-e
表示列出所有進程,-f
則表示以全格式輸出,即展示包括PID(進程ID)、父進程ID、用戶、啟動時間等在內的詳細信息。 -
grep "current.jar"
:通過管道|
,將上一步的結果作為輸入,使用grep
命令過濾出包含字符串"current.jar"的行。通常,這用來找出與運行中的Java應用程序相關的進程,尤其是當該應用的jar包名為current.jar
時。 -
grep -v grep
:再次通過管道傳遞結果,并使用grep -v
來排除那些包含grep
自身進程的信息。這樣做是為了避免在結果中誤殺執行此命令的grep
進程。 -
awk '{print $2}'
:進一步處理管道傳來的數據,使用awk
命令提取每行的第二個字段(即PID)。在ps -ef
的輸出中,PID通常是每行的第二個列(以空格分隔)。 -
| xargs kill -9
:最后,通過管道,將前面命令得到的所有PID作為輸入傳遞給xargs
。xargs
的作用是將這些PID作為參數傳遞給后面的命令。在這里,它執行的是kill -9
,其中-9
是SIGKILL信號,這是一種強制終止進程的信號,這意味著它會立即結束指定PID的進程,而不給進程清理資源或優雅退出的機會。