Spring Boot 以 jar 包方式運行在后台


spring-boot jar 包方式啟動: 
首先,為了防止和常用的 Tomcat 8080 端口沖突,將 Spring-boot 項目的端口號設置為 9090。 
具體方法:在 application.properties 文件里寫 server.port=9090。 
使用 maven 命令:clean package 打包。 
放到服務器上一個合適的位置。 
使用 Java -jar spring-boot01-1.0-SNAPSHOT.jar 命令,啟動 jar 包。 
然后,在瀏覽器輸入 http://124.232.163.150:9090/hello 就可以看到有 json 格式的數據返回。

然而,上面的這種方式,只要控制台關閉,服務就不能訪問了。下面我們使得 jar 包在后台運行。

java -jar spring-boot01-1.0-SNAPSHOT.jar > log.file 2>&1 &
  • 1
  • 1

對於上面的命令的解釋:

  1. bash 中 0、1、2 三個數字分別代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,即標准輸入(一般是鍵盤),標准輸出(一般是顯示屏,准確的說是用戶終端控制台),標准錯誤(出錯信息輸出)。
數字 含義
0 標准輸入(一般是鍵盤)
1 標准輸出(一般是顯示屏,准確的說是用戶終端控制台)
2 標准錯誤(出錯信息輸出)

2. 輸入輸出可以重定向,所謂重定向輸入就是在命令中指定具體的輸入來源,譬如 cat < test.c 將 test.c 重定向為 cat 命令的輸入源。輸出重定向是指定具體的輸出目標以替換默認的標准輸出,譬如 ls > 1.txt 將 ls 的結果從標准輸出重定向為 1.txt 文本。 
有時候會看到如 ls >> 1.txt這類的寫法。 
> 和 >> 的區別在於:> 用於新建而 >> 用於追加。即 ls > 1.txt 會新建一個 1.txt 文件並且將 ls 的內容輸出到新建的 1.txt 中,而 ls >> 1.txt 則用在 1.txt 已經存在,而我們只是想將 ls 的內容追加到 1.txt 文本中的時候。 
3. 默認輸入只有一個(0,STDIN_FILENO),而默認輸出有兩個(標准輸出1 STDOUT_FILENO,標准錯誤2 STDERR_FILENO)。因此默認情況下,shell 輸出的錯誤信息會被輸出到 2,而普通輸出信息會輸出到 1 。但是某些情況下,我們希望在一個終端下看到所有的信息(包括標准輸出信息和錯誤信息),要怎么辦呢?對了,你可以使用我們上面講到的輸出重定向。思路有了,怎么寫呢? 非常直觀的想法就是 2>1 (將2重定向到1嘛),行不行呢?試一試就知道了。我們進行以下測試步驟:

步驟 命令 解釋
1 mkdir test && cd test 創建 test 文件夾並進入 test 目錄
2 touch a.txt b.c c 創建 a.txt、b.c、c 三個文件
3 ls > 1 按我們的猜測,這句應該是將 ls 的結果重定向到標准輸出,因此效果和直接 ls 應該一樣。但是實際這句執行后,標准輸出中並沒有任何信息
4 ls 執行 3 之后再次 ls ,則會看到 test 文件夾中多了一個文件 1
5 cat 1 查看文件1的內容,實際結果為:1 a.txt b.c c

可見步驟 3 中 ls > 1 並不是將 ls 的結果重定向為標准輸出,而是將結果重定向到了一個文件 1 中。即 1 在此處不被解釋為 STDOUT_FILENO,而是文件1。 
4. 到了此時,你應該也能猜到 2>&1 的用意了。不錯,2>&1 就是用來將標准錯誤 2 重定向到標准輸出 1 中的。此處 1 前面的 & 就是為了讓 bash 將 1 解釋成標准輸出而不是文件 1 。至於最后一個 & ,則是讓 bash 在后台執行。

這里寫圖片描述

如果這個時候,我想關掉后台運行的 Spring Boot 的服務,我要這樣做:

ps aux | grep spring | xargs kill -9

此時,控制台顯示:

這里寫圖片描述

參考資料: 
Spring boot jar 后台運行 - 茶爸爸 的專欄 - 博客頻道 - CSDN.NET 
http://blog.csdn.net/xiaoyu411502/article/details/48520239


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM