不能使用SIGKILL杀死Docker容器中的pid 1
出于某种原因,我想杀死docker集装箱中的主要Python进程(PID 1)。 但是SIGTERM
, SIGKILL
等terminal信号不工作。 我的意思是,跑kill -SIGKILL 1
没有效果。 我怎样才能从容器内部杀死pid 1? 我不想运行docker stop
或类似的解决scheme。
根据Docker问题跟踪器以及pid 1s的一般文档状态,您需要专门为信号添加一个处理程序,并从中取消处理。
signal.signal(signal.SIGINT, exit_gracefully) signal.signal(signal.SIGTERM, exit_gracefully)
exit_gracefully
需要定义并最终调用sys.exit(0)
。
这种行为是由内核所要求和强制的,因为它不会在其他pid上调用sigaction
默认值,这是终止的。
我们需要在Node.js中做类似的事情。