最近,我的一个第三方程序以一种奇怪的方式挂起了。它停止接受输入或输出,并且 ^C 和 ^\ 不执行任何操作。kill -9
并终止父进程做结束它。
进程处于什么状态,导致 SIGTERM 不起作用但 SIGKILL 起作用?并且,像这样使用 SIGKILL 时我应该注意哪些危险?
答案1
程序(和脚本)可以捕获并处理或忽略除 9(SIGKILL)之外的任何信号。SIGKILL 是最后的手段,因为它会取消程序可能执行的任何现有清理。任何信号的默认操作都是终止进程,因此您可以尝试其他数字,看看程序是否会处理它们或被终止。使用以下命令查看所有可能的信号列表:
kill -L
通常,程序只会处理 SIGKILL 之外的 62 种可能性中的几种。