kill 和kill -9 有什么区别?

问题描述 投票:0回答:3

Linux 命令行上的

kill
kill -9
有什么区别?

linux shell process kill
3个回答
20
投票

kill
又名
kill -TERM
又名
kill -15
是终止进程的安全且正确的方法。相当于安全关闭电脑。

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

请参阅Linux&Unix 堆栈交换了解更多信息。


2
投票

Kill 和 Kill -9 都用于杀死进程。但区别在于收到 Kill 或 Kill -9 的进程的行为方式。

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

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

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


2
投票

kill
是一种实用程序,用于向一个或多个进程发送不同的信号(通常用于终止、暂停、继续等 - 操作进程)。

在没有任何信号编号(有时称为信号代码)的情况下执行

kill
时,将使用默认信号编号
15
,相当于
SIGTERM
信号名称。

另一个信号编号是

9
,相当于
SIGKILL
信号名称。

kill -15 PID
(与
kill PID
相同)和
kill -9 PID
之间的区别在于,首先优雅地关闭指定进程,然后强制关闭指定进程,杀死该进程及其所有子进程。


通常,要终止特定进程,您可以使用

kill
以四种替代方式之一:

  • kill -signalnumber PID
  • kill -s signalnumber PID
  • kill -SIGNALNAME PID
  • kill -s SIGNALNAME PID

(PID代表进程ID)

© www.soinside.com 2019 - 2024. All rights reserved.