Docker文档注意以下(带代码)关于如何clean up在容器关闭时运行:
最后,如果您需要在关机时进行一些额外的清理,...,您可能需要确保
ENTRYPOINT脚本接收到 Unix 信号,传递它们,然后再做一些工作
#!/bin/sh
trap "echo TRAPed signal" HUP INT QUIT KILL TERM
/usr/sbin/apachectl start
Run Code Online (Sandbox Code Playgroud)
我认为这trap会捕捉到一个KILL信号。但是,我在这篇文章中读到:
除了 SIGKILL 和 SIGSTOP 之外的所有信号都可以被进程拦截。
然而,另一篇文章指出:
有一种信号是您无法捕获的:SIGKILL 或信号 9。
是哪个?
你无法捕捉到 SIGSTOP。您引用的页面有误。
是的,上面的脚本试图捕捉 KILL 信号。它失败。您可以使用以下脚本轻松验证这一点:
#!/bin/sh
echo "Running shell in pid $$"
trap "echo TRAPed signal" HUP INT QUIT KILL TERM STOP
sleep 20
Run Code Online (Sandbox Code Playgroud)
尝试向它发送 KILL 和 STOP 信号,您将看到进程分别终止和停止,而没有打印消息。如果您尝试任何其他捕获的信号,您将看到它们按预期处理。
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |