參考網(wǎng)址:http://blog.csdn.net/lw_power/article/details/50493648
Spring-boot jar 包方式啟動(dòng):
首先,為了防止和常用的 Tomcat 8080 端口沖突,將 Spring-boot 項(xiàng)目的端口號(hào)設(shè)置為 9090。
具體方法:在 application.properties 文件里寫 server.port=9090。
使用 maven 命令:clean package 打包。
放到服務(wù)器上一個(gè)合適的位置。
使用 java -jar spring-boot01-1.0-SNAPSHOT.jar 命令,啟動(dòng) jar 包。
然后,在瀏覽器輸入 http://124.232.163.150:9090/hello 就可以看到有 json 格式的數(shù)據(jù)返回。
然而,上面的這種方式,只要控制臺(tái)關(guān)閉,服務(wù)就不能訪問了。下面我們使得 jar 包在后臺(tái)運(yùn)行。
nohup java -jar erp-0.0.1-SNAPSHOT.jar > my.log 2>&1 &
對(duì)于上面的命令的解釋:
- bash 中 0、1、2 三個(gè)數(shù)字分別代表 STDIN_FILENO 、 STDOUT_FILENO 、STDERR_FILENO ,即標(biāo)準(zhǔn)輸入(一般是鍵盤),標(biāo)準(zhǔn)輸出(一般是顯示屏,準(zhǔn)確的說是用戶終端控制臺(tái)),標(biāo)準(zhǔn)錯(cuò)誤(出錯(cuò)信息輸出)。
| 數(shù)字 | 含義 |
|---|---|
| 0 | 標(biāo)準(zhǔn)輸入(一般是鍵盤) |
| 1 | 標(biāo)準(zhǔn)輸出(一般是顯示屏,準(zhǔn)確的說是用戶終端控制臺(tái)) |
| 2 | 標(biāo)準(zhǔn)錯(cuò)誤(出錯(cuò)信息輸出) |
2. 輸入輸出可以重定向,所謂重定向輸入就是在命令中指定具體的輸入來源,譬如 cat < test.c 將 test.c 重定向?yàn)?cat 命令的輸入源。輸出重定向是指定具體的輸出目標(biāo)以替換默認(rèn)的標(biāo)準(zhǔn)輸出,譬如 ls > 1.txt將 ls 的結(jié)果從標(biāo)準(zhǔn)輸出重定向?yàn)?1.txt 文本。
有時(shí)候會(huì)看到如 ls >> 1.txt這類的寫法。
> 和 >> 的區(qū)別在于:> 用于新建而 >> 用于追加。即 ls > 1.txt 會(huì)新建一個(gè) 1.txt 文件并且將 ls 的內(nèi)容輸出到新建的 1.txt 中,而 ls >> 1.txt 則用在 1.txt 已經(jīng)存在,而我們只是想將 ls 的內(nèi)容追加到 1.txt 文本中的時(shí)候。
3. 默認(rèn)輸入只有一個(gè)(0,STDIN_FILENO),而默認(rèn)輸出有兩個(gè)(標(biāo)準(zhǔn)輸出1 STDOUT_FILENO,標(biāo)準(zhǔn)錯(cuò)誤2 STDERR_FILENO)。因此默認(rèn)情況下,shell 輸出的錯(cuò)誤信息會(huì)被輸出到 2,而普通輸出信息會(huì)輸出到 1 。但是某些情況下,我們希望在一個(gè)終端下看到所有的信息(包括標(biāo)準(zhǔn)輸出信息和錯(cuò)誤信息),要怎么辦呢?對(duì)了,你可以使用我們上面講到的輸出重定向。思路有了,怎么寫呢? 非常直觀的想法就是 2>1(將2重定向到1嘛),行不行呢?試一試就知道了。我們進(jìn)行以下測試步驟:
| 步驟 | 命令 | 解釋 |
|---|---|---|
| 1 | mkdir test && cd test | 創(chuàng)建 test 文件夾并進(jìn)入 test 目錄 |
| 2 | touch a.txt b.c c | 創(chuàng)建 a.txt、b.c、c 三個(gè)文件 |
| 3 | ls > 1 | 按我們的猜測,這句應(yīng)該是將 ls 的結(jié)果重定向到標(biāo)準(zhǔn)輸出,因此效果和直接 ls 應(yīng)該一樣。但是實(shí)際這句執(zhí)行后,標(biāo)準(zhǔn)輸出中并沒有任何信息 |
| 4 | ls | 執(zhí)行 3 之后再次 ls ,則會(huì)看到 test 文件夾中多了一個(gè)文件 1 |
| 5 | cat 1 | 查看文件1的內(nèi)容,實(shí)際結(jié)果為:1 a.txt b.c c |
可見步驟 3 中 ls > 1 并不是將 ls 的結(jié)果重定向?yàn)闃?biāo)準(zhǔn)輸出,而是將結(jié)果重定向到了一個(gè)文件 1 中。即 1 在此處不被解釋為 STDOUT_FILENO,而是文件1。
4. 到了此時(shí),你應(yīng)該也能猜到 2>&1 的用意了。不錯(cuò),2>&1 就是用來將標(biāo)準(zhǔn)錯(cuò)誤 2 重定向到標(biāo)準(zhǔn)輸出 1 中的。此處 1 前面的 & 就是為了讓 bash 將 1 解釋成標(biāo)準(zhǔn)輸出而不是文件 1 。至于最后一個(gè) & ,則是讓 bash 在后臺(tái)執(zhí)行。
如果這個(gè)時(shí)候,我想關(guān)掉后臺(tái)運(yùn)行的 Spring Boot 的服務(wù),我要這樣做:
ps aux | grep java
kill -9 [進(jìn)程id]
此時(shí),控制臺(tái)顯示: