日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java spring启动和终止_springBoot jar启动以停止脚本参数详解

發(fā)布時(shí)間:2024/4/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java spring启动和终止_springBoot jar启动以停止脚本参数详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、啟動(dòng)腳本

Springboot 項(xiàng)目打成jar包后,在Linux環(huán)境上一般有如下幾種啟動(dòng)方式:

1. “java -jar XXX.jar ”

命令結(jié)尾沒(méi)有 “&” ,表示在當(dāng)前ssh窗口,可按CTRL + C打斷程序運(yùn)行,或者直接關(guān)閉窗口,則程序直接退出

2. java -jar app.jar &

表示在當(dāng)窗口關(guān)閉時(shí),程序才會(huì)中止運(yùn)行。&代表讓該命令在后臺(tái)執(zhí)行。

3. nohub 方式啟動(dòng):

& 表示后臺(tái)運(yùn)行,但是當(dāng)用戶推出終端或掛起的時(shí)候,命令也跟著退出。而nohub的意思就是 no hung up (不掛起),命令永久的執(zhí)行下去,和用戶終端沒(méi)有關(guān)系。

nohup java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar >/dev/null 2>&1 &

參數(shù)詳解:nohub : 不掛斷地運(yùn)行命令-Dfile.encoding=UTF-8: 字符集(可以不用設(shè)置)-Xms2000m:啟動(dòng)分配內(nèi)存-Xmx2000m:運(yùn)行最大內(nèi)存-jar :jar方式啟動(dòng)

/dev/null >2>& 1 : 一般情況下是指定日志輸出位置例如:nohup java -jar XXX.jar > Log.log &

標(biāo)準(zhǔn)輸入文件(stdin):stdin的文件描述符為0,Unix程序默認(rèn)從stdin讀取數(shù)據(jù)。標(biāo)準(zhǔn)輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認(rèn)向stdout輸出數(shù)據(jù)。標(biāo)準(zhǔn)錯(cuò)誤文件(stderr):stderr的文件描述符為2,Unix程序會(huì)向stderr流中寫入錯(cuò)誤信息?!?gt;dev/null 2>&1” :將 標(biāo)準(zhǔn)錯(cuò)誤 (stderr) 2 重定向到 (stdout ) 1 最終輸出到 Log.log 中

dev/null 是一個(gè)特殊的文件,寫入到它的內(nèi)容都會(huì)被丟棄;如果嘗試從該文件讀取內(nèi)容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會(huì)起到"禁止輸出"的效果。

最后說(shuō)說(shuō)為什么要不想輸出文件了還需需要這樣做:nohub 命令缺省日志的情況下回默認(rèn)將日志輸出到 nohup.out 中所以要指定日志,但是不想輸出日志的情況下就可以如上所做??梢詣?chuàng)建 start.sh 文件,然后將nohub 啟動(dòng)命令寫入即可。

二、停止腳本

ps -ef | grep app.jar | grep -v grep | awk '{print $2}' | xargs kill

命令詳解:ps -ef | grep app.jar這不不用多說(shuō),就是查找app.jar 這個(gè)進(jìn)程的相關(guān)信息。其中 | 是 管道符,意思就是上一條命令的輸出作為下一條命令的參數(shù)。也就是說(shuō)這個(gè)命令其實(shí)是兩條命令。ps -ef 是第一步代表查找所有進(jìn)程grep app.jar 第二步代表過(guò)濾出所有含有app.jar的進(jìn)程

舉個(gè)例子就是:

ps -ef|grep app.jar

root ? ? ?6999 ? ? 1 ?0 Nov04 ? ? ? ? ?00:06:23 java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar

root ? ? ?8474 29928 ?0 10:55 pts/1 ? ?00:00:00 grep --color=auto app.jar

但是為什么會(huì)出現(xiàn)兩個(gè)進(jìn)程呢,其中一個(gè)是 java 另一個(gè)是grep.其實(shí)在執(zhí)行g(shù)rep app.jar 的時(shí)候,本身也是一個(gè)進(jìn)程,并且包含了app.jar 關(guān)鍵字,所以篩選的時(shí)候就顯示出來(lái)了。其實(shí)不管有沒(méi)有app.jar 這個(gè)進(jìn)程,都會(huì)顯示出來(lái),隨便編一個(gè)aaaa.jar 執(zhí)行:

ps -ef|grep aaa.jar

root ? ? 14003 29928 ?0 11:04 pts/1 ? ?00:00:00 grep --color=auto aaa.jar

殺掉進(jìn)程,需要知道進(jìn)程號(hào),目前有兩個(gè)進(jìn)程,就需要過(guò)濾掉grep這個(gè)進(jìn)程。grep -v grep :就是去除去包含grep的進(jìn)程 。與上面的命令通過(guò) | 連接后的執(zhí)行結(jié)果如下:

ps -ef | grep app.jar | grep -v grep

root ? ? ?6999 ? ? 1 ?0 Nov04 ? ? ? ? ?00:06:24 java -Dfile.encoding=UTF-8 -Xms2000m -Xmx2000m -jar app.jar

?

可以看到已經(jīng)將java進(jìn)程過(guò)濾出來(lái)了。awk '{print $2}' 就是根據(jù)分割符打印出第二個(gè)參數(shù),這里就是進(jìn)程號(hào)。

xargs kill 中, xargs 是命令的作用,是將標(biāo)準(zhǔn)輸入轉(zhuǎn)為命令行參數(shù)。有的命令是不支持將標(biāo)準(zhǔn)輸入作為參數(shù)的,也就是不支持 | 作為輸出的。上面的grep 支持。什么是標(biāo)準(zhǔn)輸入不多說(shuō)了。這個(gè)命令也就可以看做前一步不是輸入了進(jìn)程號(hào)么,但是不能通過(guò) | 傳遞給 kill 這個(gè)命令,只能通過(guò)xargs 轉(zhuǎn)化一下。

腳本執(zhí)行如果提權(quán)限問(wèn)題 執(zhí)行 chmod u+x *.sh即可

參考資料:

總結(jié)

以上是生活随笔為你收集整理的java spring启动和终止_springBoot jar启动以停止脚本参数详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。