python - 当父进程死亡时,如何杀死使用 python subprocess.Popen() 创建的 docker?
问题描述
我有一个 python 脚本作为“服务管理器”来运行多个 docker 容器。我已经处理了正常关机(cltr+c)。但是,当我pkill -9
使用 python 脚本时,码头工人仍在运行。
libc = ctypes.CDLL("libc.so.6")
def set_pdeathsig(sig=signal.SIGTERM):
def callback():
return libc.prctl(1, sig)
return callback
open_container_cmd = "docker-compose run --rm -d test"
proc = subprocess.Popen(
open_container_cmd,
shell=True,
stdout=open(os.devnull, 'wb'),
preexec_fn=set_pdeathsig(signal.SIGTERM))
我遵循了这个答案,但没有运气。我什至尝试在终端中执行以终止kill -9 pid
具有进程 ID 的 docker 容器,proc = subprocess.Popen(open_container_cmd); proc.pid
但它甚至不会停止容器。
解决方案
推荐阅读
- javascript - JS/NodeJS 中函数执行和完成的事件
- python - Pandas Pivot_table KeyError
- html - spring boot:模板解析时出错
- python - 类型错误:open() 缺少必需的参数“文件”(位置 1)
- vb.net - 使用 linq 在数据表中选择最大值
- c++ - 如何在不解析当前行的情况下将文件指针移动到下一行
- php - 如果在php ajax和html中命中数组中的false语句,如何将值保存到数据库中?
- mysql - 在没有子查询的情况下按升序获取最后 5 条记录
- html - bokeh - 如何让悬停工具仅适用于特定点?
- java - 如何在 Tomcat 启动时安排 cron4j?