1. 程式人生 > 資訊 >TCL 商業詆譭海信鐳射電視被判賠償 200 萬元

TCL 商業詆譭海信鐳射電視被判賠償 200 萬元

linux下後臺啟動springboot專案

我們知道啟動springboot的專案有三種方式:

  • 執行主方法啟動
  • 使用命令 mvn spring-boot:run”在命令列啟動該應用
  • 執行“mvn package”進行打包時,會打包成一個可以直接執行的 JAR 檔案,使用“java -jar”命令就可以直接執行。

我們在開發的時候,通常會使用前兩種,而在部署的時候往往會使用第三種。但是,我們在使用java -jar來執行的時候,並非後臺執行。

下面我們來說說伺服器上如何後臺啟動springboot專案。實際上,實現的方法有很多種,這裡就列兩種還比較好用的方式:

nohup和Shell

該方法主要通過使用nohup命令來實現,該命令的詳細介紹如下:

nohup 命令

用途:不掛斷地執行命令。

語法:nohup Command [ Arg … ][ & ]

描述:nohup 命令執行由 Command 引數和任何相關的 Arg 引數指定的命令,忽略所有結束通話(SIGHUP)訊號。在登出後使用 nohup 命令執行後臺中的程式。要執行後臺中的 nohup 命令,新增 &到命令的尾部。

示例:

nohup java -jar xxx.jar &

這樣執行後,nohup會把執行結果中的日誌輸出到當前資料夾下面的nohup.out檔案中,通常情況下我們使用以上命令即可。
我們也可以手動指定一個引數來規定日誌檔案的輸出地點,如:

nohup java -jar xxx.jar > catalina.out  2>&1 & 

如果不需要輸出日誌,可以使用如下命令

nohup java -jar xxx.jar >/dev/null &

所以,我們只需要使用nohup java -jar yourapp.jar &命令,就能讓yourapp.jar在後臺運行了。但是,為了方便管理,我們還可以通過Shell來編寫一些用於啟動應用的指令碼,比如下面幾個:

  • 關閉應用的指令碼:stop.sh
    #!/bin/bash
    PID=$(ps -ef | grep yourapp.jar | grep -v grep | awk '{ print $2 }')
    if [ -z "$PID" ]
    then
        echo Application is already stopped
    else
        echo kill $PID
        kill $PID
    fi
  • 啟動應用的指令碼:start.sh
    #!/bin/bash
    nohup java -jar yourapp.jar --server.port=8888 &
  • 整合了關閉和啟動的指令碼:run.sh,由於會先執行關閉應用,然後再啟動應用,這樣不會引起埠衝突等問題,適合在持續整合系統中進行反覆呼叫。
    #!/bin/bash
    echo stop application
    source stop.sh
    echo start application
    source start.sh

系統服務

在Spring Boot的Maven外掛中,還提供了構建完整可執行程式的功能,什麼意思呢?就是說,我們可以不用java -jar,而是直接執行jar來執行程式。這樣我們就可以方便的將其建立成系統服務在後臺運行了。主要步驟如下:

  • 在pom.xml中新增Spring Boot的外掛,並注意設定executable配置
    <build> 
      <plugins> 
        <plugin> 
          <groupId>org.springframework.boot</groupId>  
          <artifactId>spring-boot-maven-plugin</artifactId>  
          <configuration> 
            <executable>true</executable> 
          </configuration> 
        </plugin> 
      </plugins> 
    </build>
  • 在完成上述配置後,使用mvn install進行打包,構建一個可執行的jar包

  • 建立軟連線到/etc/init.d/目錄下

    sudo ln -s /var/yourapp/yourapp.jar /etc/init.d/yourapp
  • 在完成軟連線建立之後,我們就可以通過如下命令對yourapp.jar應用來控制啟動、停止、重啟操作了
    /etc/init.d/yourapp start|stop|restart

綜上,一般情況下我們使用以下命令即可實現jar包後臺啟動:

nohup java -jar xxx.jar &

通常,在編寫java專案時我們自己對日誌檔案進行了配置,在生產環境上我們不需要輸出預設的nohup.out日誌,此時我們可以使用如下命令啟動jar包

nohup java -jar xxxx.jar >/dev/null 2>&1 &

關於該命令的詳細解釋,可以看我的這篇文章linux重定向及/dev/null 2>&1詳解

補充:使用shell指令碼一鍵啟動 重啟 停止jar包

連結:編寫shell指令碼一鍵啟動 重啟 停止springboot jar包