使用kill -9与kill SIGUSR2的区别

时间:2012-12-13 17:17:39

标签: shell kill-process sigkill

使用kill命令格式的操作有什么区别,在哪种场景下使用。

kill -9 process-id
kill SIGUSR2 process-id

1 个答案:

答案 0 :(得分:3)

如果您想将SIGUSR2发送给流程,您可以使用以下任一项:

kill -SIGUSR2 $pid
kill -USR2 $pid
kill -10 $pid   # This will vary with platform

如果您想将SIGKILL发送给流程,您可以使用以下任一项:

kill -SIGKILL $pid
kill -KILL $pid
kill -9 $pid

不确定如何回答有关“哪种情况”的问题。如果要发送USR2,则使用前3个命令之一。如果您想发送KILL,请使用后者之一。您通常希望避免使用KILL,因为接收KILL的进程无法自行清理。另一方面,许多软件写得很差,只能通过SIGKILL终止。发送TERM通常被认为更礼貌,然后等待一段时间再发送TERM,然后再发送KILLUSR2通常仅对期望它的程序有用,并且会以某种有用的方式响应。如果程序没有预料到信号并且没有采取任何操作来忽略它,则默认行为是终止。

请注意,SIGUSR2的特定信号编号会有所不同。根据平台,它可能是10,12,31,可能还有许多其他值。最好避免明确设置值。唯一的standardized信号是1,2,3,6,9,14和15,所以9总是SIGKILL,但SIGUSR2可能(并且确实!)变化