docker 僵尸进程问题

docker僵尸进程

  • 子进程结束后,父进程没有回收该进程资源(父进程可能没有wait),子进程残留资源存放与内核中,就变为僵尸进程(zombie)

  • 场景分析:python脚本A中执行B应用,将A部署在docker中,在yml文件中COMMAND:[“A”]进行运行A

    • 进入容器中,docker exec -it test bash,发现A的pid为1,0是init

    • 若A中执行B的方式是os.system(“/usr/bin/B”),会发现B的ppid是1,手动kill 掉B服务,B就会出现僵尸进程情况(并且无法被kill掉)。因为os.system不具有回收资源功能

    • 若A中执行B的方式是subprocess.run([“/usr/bin/B”], shell=True),会发现B的ppid是一个bash,手动kill 掉B服务,B资源会被bash进行回收,bash同时也会运行结束;

  • docker中直接启动应用和使用bash启动应用的区别就是是否具有回收资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值