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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java kill信号_kill 命令在Java应用中使用注意事项

發布時間:2024/10/12 java 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java kill信号_kill 命令在Java应用中使用注意事项 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

我們都知道,kill在linux系統中是用于殺死進程。

kill pid [..]

kill命令可將指定的信號發送給相應的進程或工作。 kill命令默認使用信號為15,用于結束進程或工作。如果進程或工作忽略此信號,則可以使用信號9,強制殺死進程或作業.

因此,如果確保將進程殺死,可以使用-9參數

kill -9 pid [..]

linux 中常見的信號

1? ?SIGHUP? ? ? ? ? ? ?掛起進程

2? ?SIGINT? ? ? ? ? ? ? ?終止進程

3? ?SIGGQUIT  ? 停止進程

9? ?SIGKILL   ? 無條件終止進程

15? SIGTERM? ? ? ? ? 盡可能終止進程

17? SIGSTOP? ? ? ? ? ?無條件停止進程,但不是終止

18? SIGTSTP   停止或者暫停進程,但不終止進程

19 SIGCONT   繼續運行停止的進程

在Java中的應用

創建一個SpringBoot的web應用

啟動類如下,添加了一個鉤子函數,當進程關閉時,將會調用該鉤子函數。

@SpringBootApplicationpublic classWebApplication {public static voidmain(String args[]){

SpringApplication.run(WebApplication.class,args);

Runtime.getRuntime().addShutdownHook(newThread(){

@Overridepublic voidrun() {

System.out.println("do ShutdownHook.......... ");

}

});

}

}

使用maven打包。

mvn package

測試kill -3

啟動應用

這里注意,如果使用相對路徑啟動應用,則jps看到的進程名稱為jar,使用絕對路徑如下則顯示完整的jar名稱:web-1.0.jar。

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

查看進程pid

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

使用kill -3

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

可以看到啟動界面打印了Java應用的堆棧信息。打印的是收到-3信號時刻的線程信息。

如果使用以下方式啟動應用

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

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

可以看到啟動所在的目錄多了一個文件nohup.out。該文件記錄了應用啟動運行過程中的日志。

nohup 命令 & ;

&表示以后臺方式運行應用。但如果退出關閉啟動的控制臺,進程將會停止。

nohup + &也是以后臺方式運行應用,但是退出關閉啟動的控制臺,進程不會停止。且進程日志將會輸出到nohup.out中。

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

測試kill 和kill -9

啟動應用

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

使用kill pid殺死進程

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

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

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

doShutdownHook..........

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)doShutdownHook..........2019-06-09 01:18:41.381 INFO 21470 --- [ Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'

使用kill? -9? pid殺死進程

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

lgj@lgj-Lenovo-G470:~/aProject/web/target$ kill -9 21568

最后的日志并沒有輸出鉤子函數中的內容

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

總結

在使用kill操作java應用時

1.kill -3 pid可以打印當前進程的線程信息,但是不會關閉Java應用!

2.kill pid 也就是kill -15 pid ,將會調用鉤子函數ShutdownHook,一般ShutdownHook中會進行一些操作,比如保存數據,關閉連接等。

3.kill? -9 pid.不會調用鉤子函數ShutdownHook。

總結

以上是生活随笔為你收集整理的java kill信号_kill 命令在Java应用中使用注意事项的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。