linux kill和kill -9之间有什么区别?

ep6jt1vc  于 2023-08-03  发布在  Linux
关注(0)|答案(3)|浏览(171)

谁能解释一下kill和kill-9的区别?先谢谢你。

mnemlml8

mnemlml81#

kill又名kill -TERM又名kill -15是终止进程的安全和正确的方法。这相当于安全地关闭计算机。
kill -9是一种不安全的方式,它残忍地谋杀了一个进程。这相当于拉电源线,并可能导致数据损坏。
有关详细信息,请参阅the Linux&Unix stack exchange

mm9b1k5b

mm9b1k5b2#

Kill和Kill -9都用来终止一个进程。但是区别在于收到Kill或Kill -9的进程的行为。
Kill将生成一个SIGTERM信号,要求进程优雅地杀死自己,即释放内存或照顾其他子进程。使用kill杀死一个进程不会有任何副作用,比如未释放的内存,因为它被优雅地杀死了。
Kill-9的工作原理类似,但它不会等待程序优雅地死亡。Kill-9生成一个SIGKILL信号,该信号不会检查进程的状态,并立即终止该进程。

在编码/编程环境中

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

cyvaqqii

cyvaqqii3#

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)*

相关问题