终止 docker 中正在运行的进程

终止 docker 中正在运行的进程

我已经find在docker中一个非常大的文件夹上运行了一个命令,现在它卡住了一个多小时。

我尝试过kill -9该过程,并使用 终止 docker 容器docker kill <containerid>,但没有任何方法可以帮助它移动。我无法在 docker 中运行任何命令。主机响应非常快。

进程状态为R(正在运行)。我无法strace执行(strace stucks),并且kill -9对其没有任何影响。

我尝试查看该/proc/PID/status文件,它显示:

State:  R (running) 
[...]
voluntary_ctxt_switches:    2387
nonvoluntary_ctxt_switches: 29121

最后两个数字增长得相当快。

我不太关心那个docker容器或者find命令的结果,但我关心同一台主机上的其他容器。

有没有办法在不重新启动主机的情况下消灭进程或容器?

答案1

当你构建 Docker 时,使用以下命令:

RUN apt-get install lsof

然后在 py 文件中可以使用:

os.system("lsof /dev/nvidia* | awk '{print $2}' | xargs -I {} kill {}")

记住:此命令将终止 GPU 上的所有进程

相关内容