java kill 详解_Kill命令在Java里面详解
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里面详解相关推荐
- 安装java的rpm_Centos7使用rpm命令安装java
Centos7使用rpm命令安装java l2qq · 2019-10-23 10:16 字数 2148 评论 0 收藏 0 点赞 0 Centos7使用rpm命令安装java 第一步:下载jdk 官 ...
- centos 安装java sdk_Linux——CentOS7使用yum命令安装Java SDK
安装jdk有很多种方式比如我们可以在Oracle Technology Network>Java>Java SE>Download(点此链接跳转)下载jdk-8u25-linux-x ...
- 解释java程序所使用的命令是,Java程序的执行原理以及解释说明
在初学Java的时候,我们安装完Java的开发环境后,就可以通过记事本等编辑工具编写程序了.推荐在Windows操作系统中使用EditPlus工具进行编写.由于我使用的是Mac OS,所以,我使用Su ...
- Linux学习笔记017---文件解压命令的使用_压缩解压
JAVA技术交流QQ群:170933152 找了两个,第一个好点,压缩 [root@sqb-v06 local]# tar -zcvf /usr/local/nginx-1.7.4_tar.gz /u ...
- java kill信号_kill 命令在Java应用中使用注意事项
前言 我们都知道,kill在linux系统中是用于杀死进程. kill pid [..] kill命令可将指定的信号发送给相应的进程或工作. kill命令默认使用信号为15,用于结束进程或工作.如果进 ...
- java程序暂停指令_kill命令在Java应用中使用的注意事项小结|chu
前言 我们都知道,kill在linux系统中是用于杀死进程.kill pid [..] kill命令可将指定的信号发送给相应的进程或工作. kill命令默认使用信号为15,用于结束进程或工作.如果进程 ...
- java kill 进程 时间_kill及kill-9的用法及如何实现进程的优雅退出
JAVA架构师Ya七月 2019-08-19 1. kill与signals 我们这里所说的kill是指作为shell command的那个kill(相对地,linux系统中还有个叫做kill的sys ...
- Java中如何执行source命令,在Java中运行UNIX Source命令
这是我关于stackoverflow的第一个问题,所以我会尽量保持简洁和相关. 我正在创建一个试图调用位于系统上的外部程序的Java程序,为了做到这一点,我需要调用一个shell脚本来设置相关库的链接 ...
- linux下ps ef命令详解,linux命令中ps -ef详解
1.ps -ef表示bai查看全格式的全部进程. ps是linux下最常用的也是非常强大的进程查看命令,常配合管道命令 | 和查找命令 grep 同时执行来查看特定进程. 参数含义: -e 显示所有进 ...
最新文章
- mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统
- bzoj3507: [Cqoi2014]通配符匹配
- struct timeval结构体
- Swif语法基础 要点归纳(一)
- url-pattern配置技巧
- 【车牌识别】基于matlab GUI BP神经网络车牌识别(带面板)【含Matlab源码 858期】
- Merriam Webster's Vocabulary Builder Roots 韦小绿英文词根 Unit 1整理
- 医院信息系统(HIS系统)如何接入短信/语音功能
- 带管理职位面试中遇到的常见经典问题的回答
- HTB-Apocalyst
- 查看会议或期刊在CCF中的级别(几类会议、A/B/C)
- 计算机毕业设计JAVA家庭健康预警系统mybatis+源码+调试部署+系统+数据库+lw
- 青蛙的约会(POJ 1061 扩展欧几里德算法)
- 微信开发:解决IOS端下面的点击延迟问题
- office 2010 安装出错
- 用U盘制作PE启动盘安装Windows10系统
- 2022年9月最新【国际版阿里云的注册流程】分享
- Patchwork++:基于点云的快速、稳健的地面分割方法
- Python numpy.atleast_1d函数方法的使用
- word无响应或反应慢