Kill -9 不能乱用

kill命令经常使用,并且还经常使用kill -9。

之前面试也有被问kill -3和kill -9的区别是什么。

直到今天看了Hillos的我到服务器执行kill -9后,就被通知第二天别来了!这篇文章,才意识到之前的粗心大意,没有深入的研究就胡乱使用会产生很严重的后果。

只能庆幸自己不是一个运维人员,没有在生产环境执行过kill -9这样的操作。

Kill本身

kill命令默认的信号就是15,当使用kill 进程ID时,系统会发送SIGTERM信号给Java程序,Java程序会执行shutdown hook方法做一些清理任务,保证程序可以安全退出。

Kill -3

当Kill -3 进程ID时,系统会发送SIGQUIT信号给Java程序,Java程序不会停止,会打印线程快照和堆内存快照。

kill -9

当Kill -9 进程ID时,系统会发送SIGKILL信号给Java程序,Java程序会立刻停止,不会执行shutdown hook方法,这样是不安全,有风险,可能会造成数据丢失等严重问题。

总结

一般应该使用kill命令,不应该使用kill -9。但是shutdown hook方法需要注意,不能有死循环等阻塞操作,如果有死循环的话,kill命令就会一直被阻塞,导致程序不能被正常中止。

public class JvmShutdown {

public static void main(String[] args) {

boolean flag = true;

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

System.out.println("shutdown hook executing...");

while(flag) {

// 死循环,导致程序不能正常中止

}

}));

while(flag) {

}

System.out.println("main thread execute end...");

}

}

复制代码

java kill 详解_Kill命令在Java里面详解相关推荐

  1. 安装java的rpm_Centos7使用rpm命令安装java

    Centos7使用rpm命令安装java l2qq · 2019-10-23 10:16 字数 2148 评论 0 收藏 0 点赞 0 Centos7使用rpm命令安装java 第一步:下载jdk 官 ...

  2. centos 安装java sdk_Linux——CentOS7使用yum命令安装Java SDK

    安装jdk有很多种方式比如我们可以在Oracle Technology Network>Java>Java SE>Download(点此链接跳转)下载jdk-8u25-linux-x ...

  3. 解释java程序所使用的命令是,Java程序的执行原理以及解释说明

    在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了.推荐在Windows操作系统中使用EditPlus工具进行编写.由于我使用的是Mac OS,所以,我使用Su ...

  4. Linux学习笔记017---文件解压命令的使用_压缩解压

    JAVA技术交流QQ群:170933152 找了两个,第一个好点,压缩 [root@sqb-v06 local]# tar -zcvf /usr/local/nginx-1.7.4_tar.gz /u ...

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

    前言 我们都知道,kill在linux系统中是用于杀死进程. kill pid [..] kill命令可将指定的信号发送给相应的进程或工作. kill命令默认使用信号为15,用于结束进程或工作.如果进 ...

  6. java程序暂停指令_kill命令在Java应用中使用的注意事项小结|chu

    前言 我们都知道,kill在linux系统中是用于杀死进程.kill pid [..] kill命令可将指定的信号发送给相应的进程或工作. kill命令默认使用信号为15,用于结束进程或工作.如果进程 ...

  7. java kill 进程 时间_kill及kill-9的用法及如何实现进程的优雅退出

    JAVA架构师Ya七月 2019-08-19 1. kill与signals 我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的sys ...

  8. Java中如何执行source命令,在Java中运行UNIX Source命令

    这是我关于stackoverflow的第一个问题,所以我会尽量保持简洁和相关. 我正在创建一个试图调用位于系统上的外部程序的Java程序,为了做到这一点,我需要调用一个shell脚本来设置相关库的链接 ...

  9. linux下ps ef命令详解,linux命令中ps -ef详解

    1.ps -ef表示bai查看全格式的全部进程. ps是linux下最常用的也是非常强大的进程查看命令,常配合管道命令 | 和查找命令 grep 同时执行来查看特定进程. 参数含义: -e 显示所有进 ...

最新文章

  1. mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统
  2. bzoj3507: [Cqoi2014]通配符匹配
  3. struct timeval结构体
  4. Swif语法基础 要点归纳(一)
  5. url-pattern配置技巧
  6. 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】
  7. Merriam Webster's Vocabulary Builder Roots 韦小绿英文词根 Unit 1整理
  8. 医院信息系统(HIS系统)如何接入短信/语音功能
  9. 带管理职位面试中遇到的常见经典问题的回答
  10. HTB-Apocalyst
  11. 查看会议或期刊在CCF中的级别(几类会议、A/B/C)
  12. 计算机毕业设计JAVA家庭健康预警系统mybatis+源码+调试部署+系统+数据库+lw
  13. 青蛙的约会(POJ 1061 扩展欧几里德算法)
  14. 微信开发:解决IOS端下面的点击延迟问题
  15. office 2010 安装出错
  16. 用U盘制作PE启动盘安装Windows10系统
  17. 2022年9月最新【国际版阿里云的注册流程】分享
  18. Patchwork++:基于点云的快速、稳健的地面分割方法
  19. Python numpy.atleast_1d函数方法的使用
  20. word无响应或反应慢

热门文章

  1. MATLAB用梯度法求解目标函数,我想用matlab梯度法求解目标函数
  2. TCP 报文格式及TCP Flags
  3. 【TCP/IP】IP地址的划分及其分类
  4. 总、分机构企业所得税分配计算实例
  5. xdd和go-cqhttp扫码登录提示密码错误或账号被冻结解决方法
  6. rtklib——PPP Learning
  7. android 仿微信头像裁剪,Android仿微信QQ设置图形头像裁剪功能
  8. (转)FIKKER和Nginx的反向代理服务功能对比评测报告
  9. (一)使用form表单的name属性简单实现前后端交互
  10. web浏览器获取摄像头并拍照