java defunct_神奇的Java僵尸(defunct)进程问题排查过程

本文详细记录了排查Java进程中出现defunct(僵尸)状态的过程,通过测试发现,问题并非由tail命令引起,而是由于使用ctrl+z将程序置于后台导致。解决方法是避免使用ctrl+z,确保正确结束进程,或者在进程暂停后使用fg恢复并正常结束。了解这些细节有助于避免Java进程变成僵尸进程。
摘要由CSDN通过智能技术生成

现象描述

大概1个月多以前 在启动脚本中增加了tail -f

用来启动后追踪日志判断是否启动成功

后发现无法执行shutdown.sh(卡住 利用curl) 然后无奈使用kill -9

但通过ps -el 发现此时进程变为defunct 即僵尸进程

当时的解决办法无奈 只能找到僵尸进程的父进程kill

当时认为可能是tail的问题 后来启动脚本中去掉tail 发现问题解决

But

当时一直没有来得及排查是如何引起僵尸进程的问题

这两天抽时间排查了一下 发现和tail没有一毛钱关系

艰难的排查过程1-尝试复现

测试代码Defunct.java

b9ebe832346694b62aa2622dffd570a7.png

启动脚本start.sh

37e87cf87759ee2f567081c37d4e2643.png

启动脚本start_tail.sh 使用了tail

b40da71532d47533105cda9d43df108f.png

关服脚本stop.sh 这里使用kill关服

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值