使用kill -11代替kill -9有什么危险吗?

使用kill -11代替kill -9有什么危险吗?

我最近意识到该kill实用程序可以发送我想要的任何信号,因此当我需要SIGKILL一个进程时(当它挂起或其他东西时),我发送 aSIGSEGV而不是为了有点笑(kill -11而不是kill -9。)

但是,我不知道这是否是不好的做法。那么,kill -11比 更危险吗kill -9?如果是这样,怎么办?

答案1

SIGSEGV信号由内核发送到进行了无效虚拟内存引用(分段错误)的进程。

发送 aSIGSEGV可能更“危险”的一种方法是,如果您从空间不足的文件系统中终止进程。进程收到 a 时的默认操作SIGSEGV是将核心转储到文件然后终止。核心文件可能非常大,具体取决于进程,并且可能会填满文件系统。

正如@Janka 已经提到的,您可以编写代码来告诉程序您希望它如何处理信号SIGSEGV。您不能捕获 aSIGKILL或 a SIGSTOP。我建议当您只想终止进程时使用 a 或SIGKILLa 。使用 a通常不会产生不良后果,但您想要终止的进程可能会以您意想不到的方式处理 a 。SIGSTOPSIGSEGVSIGSEGV

答案2

SIGSEGV 可以被接收程序捕获,然后可以执行程序想要的任何操作。

SIGKILL 和 SIGSTOP 是程序无法捕获或忽略的唯一信号。

相关内容