1. 程式人生 > >Spring Boot 以 jar 包方式執行在後臺

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. 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 方式執行後臺

Spring-boot jar 包方式啟動: 首先,為了防止和常用的 Tomcat 8080 埠衝突,將 Spring-boot 專案的埠號設定為 9090。 具體方法:在 application.properties 檔案裡寫 server.port=90

SpringBootjar方式後臺執行

以前web專案都是打成war放在Tomcat等伺服器中執行,springBoot簡化了該流程,它可以直接以jar包的方式執行,因為它裡面內建了Tomcat伺服器。SpringBoot以jar包方式在後臺執行的命令為: java -jar spring-boot01-1.0-SNAPSHO

spring boot 匯出jar 執行報錯無法載入 orcl驅動的問題。

原因是因為orcl資料庫是收費的,所以在pom檔案中無法匯入所以需要手動新增jar包,但是打包的時候無法將手動的jar包打包,只打包maven中的jar。 解決的辦法: 需要自己本地建立一個maven本地倉庫,然後需要配置環境 。 將執行 mvn

Spring Bootjar執行,引用外部jar

剛遇到這個問題的時候,一臉懵逼,已經打好jar包在伺服器上執行,訪問介面的時候卻提示java.lang.NoClassDefFoundError。後來發現是因為引用了一個語音合成的jar包,這個jar包不是通過maven引入的事直接add Jar新增的,所以在打包執行的時候讀

spring boot 支援jar執行jsp

一.引言        Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Boot致力於在蓬勃發展的快速應用開

Spring Boot 本地jar

install 可能 絕對路徑 空格 還需要 直接 color 常用 mvn 一:問題場景 在開發過程中,我們有時會遇到Maven中央庫沒有的jar包,比如公司自己開發的而又沒有放入公司私庫的jar包,這時就不能通過三圍在pom中直接引入。那麽怎麽在項目中引入這些本

linux測試環境,部署spring boot打的jar,簡易偷懶腳本

head 新的 lena fin abs sta log linux nbsp 當前已有jar在運行,上傳新jar之後,需要刪除舊的,執行新的,一不小心可能就把新的刪了,就寫了個腳本,做下記錄 #!/bin/bash path=/work/server/ fileH

jar方式啟動

rfi datetime lse ati 工具 vivo cms launcher lips 嗨,大家好~ ,在工作中,一個項目要部署到服務器上,我自己在工作中常見的部署tomcat和jar包方式部署的兩種方式。(其他的有待挖掘) 啊啊啊,公司正在做一個新的平臺,所

Spring BootWar啟動

tom XML 現在 prot 使用 驗證過 servle cati ack 1.IDEA Spring Initializer自動構建的war包項目,自動生成的Initializer類,用於外部Tomcat容器啟動該項目時調用,如果仍然使用主類main函數方式啟動則與此類

spring bootjar和打war的區別作用以及需要的改動

spring boot打jar包和打war包的區別作用 此文為轉載:http://mrlee23.iteye.com/blog/2047968   在開發除錯完成之後,可以將應用打

spring bootjar,獲取resource路徑下的檔案

前言:最近在spring boot專案靜態類中獲取resource路徑下檔案,在idea中啟動都可以獲取,但是打包後變成了jar包 就無法獲取到。我想到了兩種方法,一種是根據http訪問靜態資源比如     localhost:9080/static/template/xxx.ftl檔案。另外一種是根據流獲

Spring boot 讀取jar中resources下的檔案

package com.jiankunking.elasticsearch.extension.util; import org.springframework.core.io.DefaultResourceLoader; import org.springframework.core

jar方式執行web專案檔案上傳和訪問

spingBoot2.x使用 java -jar執行方式的圖片上傳和訪問處理 1.打包成jar包,需要增加maven依賴         <build>        &nb

spring bootjar和打war的區別

spring boot既可以打成war釋出,也可以找成jar包釋出。說一下區別 jar包:直接通過內建tomcat執行,不需要額外安裝tomcat。如需修改內建tomcat的配置,只需要在spring boot的配置檔案中配置。內建tomcat沒有自己的日誌輸

spring bootjar釋出

artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裡講的是jar包 終端輸入命令: mvn clean install   然後在target下檢視生成的對應的jar包檔案   如何執行呢? 找到一個

spring bootjar發布

log get window 詳細說明 pre 命令行 默認 java 即將 artifactId 是即將打包的包的名稱 version 是即將打包的版本號packaging 是即將打包的格式,這裏講的是jar包 終端輸入命令: mvn clean install

Spring Bootjar時指定main方法入口

org.springframework.bootspring-boot-maven-pluginorg.springframework.bootspring-boot-maven-plugincom

Spring Bootjar 無法響應jsp 問題

<!--增加jsp依賴 -->          <dependency>             <groupId>org.apache.tomcat.embed</groupId>             <

Android jar方式共享資源注意事項

最近的一個專案是一個Android系統的系統應用的重構開發,專案中有很多個應用,這些 應用有許多相同的介面和互動;另外,這一套應用的介面可能會需要經常調整來適配不同的客戶需求。為了減少開發和維護的工作

Spring Boot 流的方式讀取配置檔案

問題說明   在以往的專案中,我們有時會讀取資源目錄下的*.config檔案,有時會讀取絕對路徑,還挺好用,但是這種做法在Spring Boot專案中就不好使了。因為Spring Boot專案把