您现在的位置:首页行业资讯

使用 kill 命令杀死 java进程,你用对了吗?--中享思途

在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况。
每次都是本能执行如下步骤
jps
kill -9
reboot
有一次发现代码中添加的 没有生效,难道和 命令后面的数字有关?
经过一番查阅,后面的数字代表的是具体信号, 命令可将指定的信号发送给相应的进程,linux中常见的信号如下:
1SIGHUP 挂起进程
2SIGINT 终止进程
3SIGGQUIT 停止进程
9SIGKILL 无条件终止进程
15SIGTERM 尽可能终止进程
17SIGSTOP 无条件停止进程,但不是终止
18SIGTSTP 停止或者暂停进程,但不终止进程
19SIGCONT 继续运行停止的进程
命令默认情况使用15,下面我们验证下使用不同信号,有什么不同的表现。
创建一个springBoot应用
启动类如下,添加了一个钩子函数,当进程关闭时,将会调用该钩子函数。
你可以通过
也可以加上nohup + &启动
通过后者启动,可以看到启动所在的目录多了一个文件nohup.out,该文件记录了应用启动运行过程中的日志。
&表示以后台方式运行应用。但如果退出关闭启动的控制台,进程将会停止。
nohup + &也是以后台方式运行应用,但是退出关闭启动的控制台,进程不会停止,且进程日志将会输出到nohup.out中。
kill -3
通过执行jps 拿到对应的pid
并执行 ,惊奇的发现,Java进程并没有被杀掉,而是打印了一堆线程信息。
kill -9
上一步的  并没有成功的把进程杀掉,我们继续使用之前的pid。这次执行
执行完 -9,java进程消失了,只留下这么一段话。
kill -15
最后,再试试 ,犹豫Java进程已经被 -9 给kill了,需要重新启动一次。
这一次,它打印了钩子函数中的信息,随之进程也消失了。
总结
kill -3
这玩意一般用不到,可以打印当前进程的线程信息,但是不会关闭Java应用!kill -9
很暴力,不会调用钩子函数ShutdownHook。kill
也就是kill -15
很柔和,将会调用钩子函数ShutdownHook,一般ShutdownHook中会进行一些操作,比如保存数据,关闭连接等。
------ END ---------

【关键词:青岛Java培训,正规Java开发,学Java开发多少钱,Java培训哪家好,中享思途】

 st_bottom
青岛Java培训,青岛HTML5培训,青岛UI培训,青岛web开发培训,青岛IT培训,java培训,ui培训,HTML5培训,java就业培训,专业ui设计,web开发培训,IT培训,思途教育,青岛思途,中享思途
Copyright © 青岛思途共享科技信息服务有限公司 鲁ICP备14027489号-2

鲁公网安备 37021402000988号

青岛Java培训,青岛HTML5培训,青岛UI培训,青岛web开发培训,青岛IT培训,java培训,ui培训,HTML5培训,java就业培训,专业ui设计,web开发培训,IT培训,思途教育,青岛思途,中享思途