天水网站开发技术招聘,做导航网站赚钱吗,罗定市建设局网站,北京搜索引擎优化seo原创#xff1a;小姐姐味道(微信公众号ID#xff1a;xjjdog)#xff0c;欢迎分享#xff0c;转载请保留出处。任何不保留此声明的转载都是抄袭。kill是杀死的意思#xff0c;带有主动的意味。鉴于master、slave这样的名词#xff0c;需要在计算机软件中进行整改#xff…原创小姐姐味道(微信公众号IDxjjdog)欢迎分享转载请保留出处。任何不保留此声明的转载都是抄袭。kill是杀死的意思带有主动的意味。鉴于master、slave这样的名词需要在计算机软件中进行整改kill这样明显带有负面信息的单词按理说也需要被干掉。不过如果把命令名字改了效果也许会更好。因为在Linux上kill根本就不是杀死的意思。它只是想要给进程发送一个信号而已。使用kill -l可以看到长长的信号列表。对Java程序员来说用的最多的就是kill -9我也不知道从哪里来的传承码农们都喜欢这种暴力性的命令--喜欢用锋利的匕首一击致命。但是这种玩法又危险的多不给进程说话的机会。大家都知道电视剧里重要人物临死的时候会啰啰嗦嗦说很多话话说不完是不会死的。无论是武林高手还是达官贵人都得交代一些能让故事情节继续发展下去的废话。《水浒传》里的“英雄们”来的就相对直接一些。看的不爽直接单刀直入切中要害不允许他人有一丁点的废话通常情况下直接嗝屁。各位使用kill -9的兄弟们个个都像黑黑的李逵单纯、暴力、不讲人情。SIGKILL9Kill signal结束信号中国的中庸太极之道在此荡然无存。kill -9直接使得优雅关闭这个名词成了废物。何为优雅关闭其实就像是人的“遗言”要在死之前交代一些身后事。我就常常在想在我死之前要把所有的钱花的一分不剩。既不留给后代也不让它烂在银行里。这就需要做很多事。计算机软件中在死之前要处理的事情也还不少。比如需要把缓冲区的内容处理完毕发送出去微服务节点需要先把自己从注册中心摘除才能放心的go die。大体来说有下面几个影响请求丢失内存队列中等待执行请求丢失数据丢失处于内存缓存中数据未持久化到磁盘文件损坏正在写的文件没有没有更新完成导致文件损坏业务中断处理一半的业务被强行中断如支付成功了却没有更新到数据库中服务未下线上游服务依然往停止节点发送请求这些情况下如果把服务玩坏了正好被领导撞上被开是分分钟的事。Java应用中处处充斥着这种优雅靠的是shutdownhook钩子。就是下面这行代码Runtime.getRuntime().addShutdownHook(new Thread(() - System.out.println(Do something in Shutdown Hook)));有没有好的办法有用kill -15发送SIGTERM信号即可。但有时候kill -15并不能杀死进程这个时候才是kill -9需要出场的时候。听够了15临死前说的一些废话使用9要它的命。一般的需要使用kill -15去尝试杀死进程。如果过一段时间(比如10秒)进程还没有停止kill -9才会出场。kill的默认信号值就是15可以说是很贴心了。但还是有很多人使用9。我想了半天原因就是一个字懒。kill -15需要多次确认而kill -9一次完事多数情况下不会出事。有这提高工作效率的事何乐而不为呢常用的信号还有SIGQUIT也就是kill -3。在Java程序下kill -3的输出特别有意思它直接在stdout上输出了jstack命令所产生的内容。如果是tomcat那么输出就在canalina.out文件里。如果jstack对你的应用不好使了或者应用几乎没有响应了。使用kill -3是一种曲线救国的方式。其实是JDK屏蔽了这个信号对Java来说是一个福利。我们在JDK的文档中找到相关介绍。Sun’s JVM catches signals to implement shutdown hooks for abnormal JVM termination. The JVM uses SIGHUP, SIGINT, and SIGTERM to initiate the running of shutdown hooks.The JVM uses a similar mechanism to implement the pre-1.2 feature of dumping thread stacks for debugging purposes. Sun’s JVM uses SIGQUIT to perform thread dumps.我这里有一个脚本能够接受两个参数。第一个参数是pid第二个参数是等待的秒数。pid$1count$2n0if [ ! -n $count ];thencount10fiwhile [[ $n -lt $count ]]dolet nkill -0 $pidif [ $? -ne 0 ]thenecho program not existbreakelseecho send kill -15 to $pidkill -15 $pidsleep 1fiif [[ $n -eq $count ]]thenecho kill -9 $pid# after 10s , try to send kill -9kill -9 $pidfidone脚本将持续使用kill -0判断进程是否存在然后持续发送kill -15指令。等超过指定的秒数进程依然存在则最终发送kill -9命令。问题是通常情况下你还是需要等待上几秒。自动化机器人不会觉得烦你会。所以你还是用kill -9。作者简介小姐姐味道 (xjjdog)一个不允许程序员走弯路的公众号。聚焦基础架构和Linux。十年架构日百亿流量与你探讨高并发世界给你不一样的味道。我的个人微信xjjdog0欢迎添加好友进一步交流。