为什么不建议使用kill -9 关闭程序?

257 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第27天,点击查看活动详情

引言

记得刚开始工作的时候,我的领导在会议上说过,如果在系统中用kill -9 关闭程序就给我收拾东西滚蛋!

那么为什么不让使用呢?这不是大部分程序员在linux系统中最常用的关闭程序的命令吗?

什么是kill -9 pid

kill 可以将指令信息传送至程序。预先设计的SIGKILL(15),可将指定程序终止掉。假如没有正常终止此程序,可使用SIGKILL(9)信息进行强制删除程序。

我相信很多程序员都用过kill -9 pid这个命令,彻底杀死进程的。通常情况下使用这个是没有问题的, 但是在我们生产项目中使用他的时候,可能会遇到致命的错误问题,而且不好排查原因。

kill -9 pid所产生的问题

我们知道kill -9 属于暴力删除的,所以程序会有比较严重的问题,那么会有什么问题呢,我们看下文:

例如:我们最常遇到的转账功能,A转账给B的时候,突然就断电了,会有什么侯异常信息呢?当然如果用的是innob引擎的话没有随时,因为它是事务控制的, 但是Myisam的话,那么就会是灾难性的。比如A扣了钱,这时候我们需要在B的账户中增加钱款金额,可是突然断电了,就会出现A已经扣钱,但是B没有增加钱,就会造成坏账,在生产中是不允许发生这种情况的。

这种断电情况,其实就是和kill -9 pid是一样的,它相当于强制断电了。

这个就是为什么我们在生产环境中把不允许使用的kill -9 pid来对进程清理的原因!

好了,今天关于不建议使用kill -9 关闭程序的文章就讲解到这里,欢迎大家留言交流。

也欢迎大家关注我的公众号《coder练习生》