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。
这是什么?
答案 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信号,您将看到该过程分别死亡和停止,而不会打印消息。如果您尝试任何其他捕获信号,您将看到这些信号按预期处理。