欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

kill命令在Java應(yīng)用中使用的注意事項(xiàng)小結(jié)

 更新時(shí)間:2019年06月10日 10:40:36   作者:冬眠的山谷  
這篇文章主要給大家介紹了關(guān)于kill命令在Java應(yīng)用中使用的注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

我們都知道,kill在linux系統(tǒng)中是用于殺死進(jìn)程。

kill pid [..]

kill命令可將指定的信號(hào)發(fā)送給相應(yīng)的進(jìn)程或工作。 kill命令默認(rèn)使用信號(hào)為15,用于結(jié)束進(jìn)程或工作。如果進(jìn)程或工作忽略此信號(hào),則可以使用信號(hào)9,強(qiáng)制殺死進(jìn)程或作業(yè).

因此,如果確保將進(jìn)程殺死,可以使用-9參數(shù)

kill -9 pid [..]

linux 中常見的信號(hào)

 1   SIGHUP             掛起進(jìn)程

 2   SIGINT               終止進(jìn)程

 3   SIGGQUIT    停止進(jìn)程

 9   SIGKILL     無(wú)條件終止進(jìn)程

15  SIGTERM          盡可能終止進(jìn)程

17  SIGSTOP           無(wú)條件停止進(jìn)程,但不是終止

18  SIGTSTP   停止或者暫停進(jìn)程,但不終止進(jìn)程

19 SIGCONT   繼續(xù)運(yùn)行停止的進(jìn)程

在Java中的應(yīng)用

創(chuàng)建一個(gè)SpringBoot的web應(yīng)用

啟動(dòng)類如下,添加了一個(gè)鉤子函數(shù),當(dāng)進(jìn)程關(guān)閉時(shí),將會(huì)調(diào)用該鉤子函數(shù)。

@SpringBootApplication
public class WebApplication {

 public static void main(String args[]){

 SpringApplication.run(WebApplication.class,args);

 Runtime.getRuntime().addShutdownHook(new Thread(){

 @Override
 public void run() {
 System.out.println("do ShutdownHook.......... ");
 }
 });
 }
}

使用maven打包。

mvn package

測(cè)試kill -3 

啟動(dòng)應(yīng)用

這里注意,如果使用相對(duì)路徑啟動(dòng)應(yīng)用,則jps看到的進(jìn)程名稱為jar,使用絕對(duì)路徑如下則顯示完整的jar名稱:web-1.0.jar。

java -jar ~/aProject/web/target/web-1.0.jar

查看進(jìn)程pid

lgj@lgj-Lenovo-G470:~/aProject/web/target$ jps | grep web
21060 web-1.0.jar

使用kill -3 

lgj@lgj-Lenovo-G470:~/aProject/web/target$ kill -3 21060

可以看到啟動(dòng)界面打印了Java應(yīng)用的堆棧信息。打印的是收到-3信號(hào)時(shí)刻的線程信息。

如果使用以下方式啟動(dòng)應(yīng)用

nohup java -jar ~/aProject/web/target/web-1.0.jar &
lgj@lgj-Lenovo-G470:~/aProject/web/target$ ls -l |grep nohup.out 
-rw------- 1 lgj lgj 22811 Jun 9 00:41 nohup.out

可以看到啟動(dòng)所在的目錄多了一個(gè)文件nohup.out。該文件記錄了應(yīng)用啟動(dòng)運(yùn)行過(guò)程中的日志。

nohup 命令 & ;

&表示以后臺(tái)方式運(yùn)行應(yīng)用。但如果退出關(guān)閉啟動(dòng)的控制臺(tái),進(jìn)程將會(huì)停止。

nohup + &也是以后臺(tái)方式運(yùn)行應(yīng)用,但是退出關(guān)閉啟動(dòng)的控制臺(tái),進(jìn)程不會(huì)停止。且進(jìn)程日志將會(huì)輸出到nohup.out中。

此時(shí)使用kill -3。打印的線程信息可以到該nohup.out中查看。

測(cè)試kill 和kill -9

啟動(dòng)應(yīng)用

java -jar ~/aProject/web/target/web-1.0.jar

使用kill pid殺死進(jìn)程

lgj@lgj-Lenovo-G470:~/aProject/web/target$ jps | grep web
21470 web-1.0.jar
lgj@lgj-Lenovo-G470:~/aProject/web/target$ kill 21470
lgj@lgj-Lenovo-G470:~/aProject/web/target$ 

可以看到輸出日志中輸出了鉤子函數(shù)中所打印的

do ShutdownHook..........

2019-06-09 01:18:28.610  INFO 21470 --- [           main] com.demo.web.WebApplication              : Started WebApplication in 4.585 seconds (JVM running for 5.274)
do ShutdownHook..........
2019-06-09 01:18:41.381  INFO 21470 --- [       Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

使用kill  -9  pid殺死進(jìn)程

lgj@lgj-Lenovo-G470:~/aProject/web/target$ jps | grep web
21568 web-1.0.jar
lgj@lgj-Lenovo-G470:~/aProject/web/target$ kill -9 21568

最后的日志并沒有輸出鉤子函數(shù)中的內(nèi)容

2019-06-09 01:20:37.579  INFO 21568 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8452 (http) with context path ''
2019-06-09 01:20:37.585  INFO 21568 --- [           main] com.demo.web.WebApplication              : Started WebApplication in 4.171 seconds (JVM running for 4.812)
Killed
 

總結(jié)

在使用kill操作java應(yīng)用時(shí)

1.kill -3 pid可以打印當(dāng)前進(jìn)程的線程信息,但是不會(huì)關(guān)閉Java應(yīng)用!

2.kill pid 也就是kill -15 pid ,將會(huì)調(diào)用鉤子函數(shù)ShutdownHook,一般ShutdownHook中會(huì)進(jìn)行一些操作,比如保存數(shù)據(jù),關(guān)閉連接等。

3.kill  -9 pid.不會(huì)調(diào)用鉤子函數(shù)ShutdownHook。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論