`陷阱Linux信号 - SIGSTOP?

时间:2016-05-11 13:28:10

标签: linux signals

Docker docs注意以下(w / code)关于如何在容器关闭时运行clean up

  

最后,如果你需要做一些额外的清理......关机,......,你   可能需要确保ENTRYPOINT脚本接收Unix   信号,传递它们,然后再做一些工作

#!/bin/sh

trap "echo TRAPed signal" HUP INT QUIT KILL TERM

/usr/sbin/apachectl start

我认为此trap会捕获KILL信号。但是,我在此阅读post

  

该过程可以拦截除SIGKILL和SIGSTOP之外的所有信号。

然而,另有post个州:

  

有一个信号无法捕获:SIGKILL或信号9。

这是什么?

1 个答案:

答案 0 :(得分:1)

你无法捕获SIGSTOP。您引用的页面有误。

是的,上面的脚本试图捕获KILL信号。它失败。您可以使用以下脚本轻松验证这一点:

#!/bin/sh

echo "Running shell in pid $$"
trap "echo TRAPed signal" HUP INT QUIT KILL TERM STOP

sleep 20

尝试向其发送KILL和STOP信号,您将看到该过程分别死亡和停止,而不会打印消息。如果您尝试任何其他捕获信号,您将看到这些信号按预期处理。