使用 kill 命令杀死 java进程,你用对了吗?

createh54个月前 (02-01)技术教程26

原文地址:https://dwz.cn/E88v8sLN

作者: 占小狼


在本地调试agent相关功能,需要经常性的杀掉Java进程,验证一些极端情况。

每次都是本能执行如下步骤

  • jps
  • kill -9
  • reboot

有一次发现代码中添加的 ShutdownHook没有生效,难道和 kill命令后面的数字有关?

经过一番查阅,后面的数字代表的是具体信号, kill命令可将指定的信号发送给相应的进程,linux中常见的信号如下:

  • 1 SIGHUP 挂起进程
  • 2 SIGINT 终止进程
  • 3 SIGGQUIT 停止进程
  • 9 SIGKILL 无条件终止进程
  • 15 SIGTERM 尽可能终止进程
  • 17 SIGSTOP 无条件停止进程,但不是终止
  • 18 SIGTSTP 停止或者暂停进程,但不终止进程
  • 19 SIGCONT 继续运行停止的进程

kill命令默认情况使用15,下面我们验证下使用不同信号,有什么不同的表现。

创建一个springBoot应用

启动类如下,添加了一个钩子函数,当进程关闭时,将会调用该钩子函数。

你可以通过

也可以加上nohup + &启动

通过后者启动,可以看到启动所在的目录多了一个文件nohup.out,该文件记录了应用启动运行过程中的日志。

&表示以后台方式运行应用。但如果退出关闭启动的控制台,进程将会停止。

nohup + &也是以后台方式运行应用,但是退出关闭启动的控制台,进程不会停止,且进程日志将会输出到nohup.out中。

kill -3

通过执行jps 拿到对应的pid

并执行 kill-35085,惊奇的发现,Java进程并没有被杀掉,而是打印了一堆线程信息。

kill -9

上一步的 kill-3 并没有成功的把进程杀掉,我们继续使用之前的pid。 这次执行 kill-95085

执行完 -9,java进程消失了,只留下这么一段话。

kill -15

最后,再试试 kill-15,犹豫Java进程已经被 -9 给kill了,需要重新启动一次。

这一次,它打印了钩子函数中的信息,随之进程也消失了。

总结

kill -3这玩意一般用不到,可以打印当前进程的线程信息,但是不会关闭Java应用! kill -9很暴力,不会调用钩子函数ShutdownHook。 kill也就是kill -15很柔和,将会调用钩子函数ShutdownHook,一般ShutdownHook中会进行一些操作,比如保存数据,关闭连接等。

我目前是在职Java开发,如果你现在正在了解Java技术,想要学好Java,渴望成为一名Java开发工程师,在入门学习Java的过程当中缺乏基础的入门视频教程,你可以关注并私信我:01。我这里有一套最新的Java基础JavaSE的精讲视频教程,这套视频教程是我在年初的时候,根据市场技术栈需求录制的,非常的系统完整。

相关文章

又一时代结束 甲骨文宣布将弃用Java插件

Java 插件一直被认为是系统不稳定因素的温床,它的时代即将过去。甲骨文公司宣布 Java 插件即将退出历史舞台。Java 插件不会立即死去。它将在下一个版本的 Java 开发工具包中被弃用,然后随着...

经验分享|程序员成功转行IC,我终于不用再吃“青春饭”

近期后台收到了一位同学的私信,转行IC后他的薪资涨了很多,这位同学之前是程序员,经过不断努力成功转行到IC后端。我是西安一所普通的一本毕业,学的是自动化专业,大学跟大多数人一样过得浑浑噩噩,对自己的职...

实战!如何在退出登录时借助外力使JWT令牌失效?

大家好,我是不才陈某~今天这篇文章介绍一下如何在修改密码、修改权限、注销等场景下使JWT失效。文章的目录如下:解决方案JWT最大的一个优势在于它是无状态的,自身包含了认证鉴权所需要的所有信息,服务器端...

9 OOM和JVM退出。OOM后JVM一定会退出吗?

首先我们把两个概念讲清楚OOM是线程在申请堆内存,发现堆内存空间不足时候抛出的异常。JVM退出的条件如下:java虚拟机在没有守护线程的时候会退出。守护线程是启动JVM的线程,服务于用户线程。我们简单...

巧算青蛙几天跳出井口问题(青蛙跳出井口后的想法)

例1:一只青蛙从井底往井口跳,井深20米,白天往上跳5米,夜间往下滑2米,问几天后可以到井口外?解:20-5=1515÷(5-2)=55+1=6(天)例2:一只蜗牛沿着10米高的树往上爬,白天往上爬5...

Dubbo如何优雅停机(dubbo优雅关机)

优雅停机特性是所有 RPC 框架中非常重要的特性之一,因为核心业务在服务器中正在执行时突然中断可能会出现严重后果,接下来我们消息探讨 Dubbo 框架内部实现优雅停机原理。Dubbo 中实现的优雅停机...