【问题标题】:What is the difference between kill and kill -9?kill 和 kill -9 有什么区别?
【发布时间】:2017-09-29 04:26:30
【问题描述】:

谁能解释一下kill和kill -9的区别。 提前致谢。

【问题讨论】:

标签: linux shell process kill


【解决方案1】:

kill aka kill -TERM aka kill -15 是终止进程的安全且正确的方法。这相当于安全地关闭计算机。

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

请参阅the Linux&Unix stack exchange 了解更多信息。

【讨论】:

  • 我喜欢你的比喻。如果您想了解更多关于 SIGTERM 和 SIGKILL 的信息,您可能需要查看this
【解决方案2】:

Kill 和 Kill -9 都用于终止进程。但不同之处在于接收到 Kill 或 Kill -9 的进程的行为方式。

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

Kill -9 的工作方式类似,但它不会等待程序优雅地终止。 Kill -9 生成一个 SIGKILL 信号,它不会检查进程的状态并立即终止进程。

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

【讨论】:

    猜你喜欢
    • 2016-07-26
    • 2013-10-15
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    相关资源
    最近更新 更多