kill和kill -9有什么区别?

时间:2017-05-01 18:37:44

标签: linux shell process kill

任何人都可以解释kill和kill -9之间的区别。 提前谢谢。

2 个答案:

答案 0 :(得分:4)

kill又名kill -TERM又称kill -15是终止流程的安全而正确的方法。它相当于安全地关闭计算机。

kill -9是残忍地谋杀一个进程的不安全方式。它相当于拔电源线,可能会导致数据损坏。

有关详细信息,请参阅the Linux&Unix stack exchange

答案 1 :(得分:0)

Kill和Kill -9都用于杀死进程。但是,在收到Kill或Kill -9的过程的行为方式上可以看到差异。

Kill将生成SIGTERM信号,要求一个进程优雅地杀死自己,即释放内存或照顾其他子进程。使用kill杀死进程不会有任何副作用,例如未释放的内存,因为它被优雅地杀死了。

Kill -9的工作原理类似,但它不等待程序正常退出。 Kill -9生成一个SIGKILL信号,该信号将不检查进程的状态并立即终止该进程。

在编码/编程环境中
SIGTERM(由Kill生成)可以在代码级别捕获和处理,如果该过程仍要达到安全状态(清除内存或类似活动),并且该过程可能不会立即被杀死,则需要一些时间来清除资源然后消失。 鉴于 进程不能忽略SIGKILL(由Kill -9生成),并且无论它们处于何种状态都将立即被杀死(这可能会引起一些问题,但是可以肯定地杀死了进程)。实际上,由于该信号直接进入内核初始化,因此进程甚至没有意识到SIGKILL信号。此时,init将停止该过程。该过程永远没有机会捕捉信号并采取行动。