出于某种原因,我想杀死 docker 容器中的主要 python 进程( PID 1 )。但是诸如 SIGTERM
、SIGKILL
之类的终止信号都不起作用。我的意思是,运行 kill -SIGKILL 1
没有任何效果。
如何从容器内部杀死 pid 1 ?我不想运行 docker stop
或类似的解决方案。
最佳答案
根据 Docker 问题跟踪器和 pid 1s 状态的一般文档,您需要专门为信号添加处理程序并从中终止进程。
signal.signal(signal.SIGINT, exit_gracefully)
signal.signal(signal.SIGTERM, exit_gracefully)
exit_gracefully
需要被定义并最终调用sys.exit(0)
。
内核需要并强制执行此行为,因为它不会在其他 pid 上调用 sigaction
默认值,即终止。
我们需要在 Node.js 中做类似的事情。
关于python - 无法使用 SIGKILL 杀死 docker 容器内的 pid 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947851/