AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 798497
Accepted
facha
facha
Asked: 2016-08-23 23:12:12 +0800 CST2016-08-23 23:12:12 +0800 CST 2016-08-23 23:12:12 +0800 CST

init 不会杀死僵尸

  • 772

我的系统上有一些僵尸进程。我已经杀死了那些僵尸的父级,希望 init 能够接管并释放资源(CLOSE_WAIT 中有很多套接字)。但是 init 并没有从系统中删除这些进程:

#ps ax
...
17051 ?        Zl   8498:24 [impalad] <defunct>
...

# ps -o ppid= -p 17051
    1

有没有办法在不重新启动的情况下移除僵尸?

更新:

我试过了kill -s SIGCHLD 1。它没有帮助。

linux init zombie
  • 1 1 个回答
  • 4234 Views

1 个回答

  • Voted
  1. Best Answer
    Ryan Babchishin
    2016-08-23T23:23:29+08:002016-08-23T23:23:29+08:00

    你不能杀死一个已经失效的进程。用别人的话说:

    http://www.linuxquestions.org/questions/suse-opensuse-60/howto-kill-defunct-processes-574612/

    您不能杀死已失效的进程(又名僵尸),因为它已经死了。它不占用任何资源,所以没什么大不了的,但如果你真的希望它从进程表中消失,你需要让它的父进程收获它。“pstree”应该为您提供进程层次结构,而“kill -1”有时足以完成这项工作。

    因为你的进程的父 pid 是 init (1),所以除了重启你什么都做不了。

    https://unix.stackexchange.com/questions/11172/how-can-i-kill-a-defunct-process-whose-parent-is-init

    你不能杀死一个(僵尸)进程,因为它已经死了。系统保留僵尸进程的唯一原因是保留退出状态供父进程收集。如果父进程没有收集退出状态,那么僵尸进程将永远存在。摆脱这些僵尸进程的唯一方法是杀死父进程。如果父级是 init,那么您只能重新启动。

    我无法对此进行测试,但这个人说你可以像这样摆脱一个已经失效的进程:

    什么是僵尸进程,如何杀死它?

    There is already an accepted answer, however: you CAN kill the zombie process. Attach with the debugger to the parent process and call waitpid function. E.g.: - let's assume that the parent has PID=100, the zombie process has PID=200
    
    $ gdb -p 100
    (gdb) call waitpid(200, 0, 0)
    (gdb) quit
    

    这家伙遇到了一个似乎继续运行的已失效进程的问题。我不明白,但这是链接。在这种情况下kill -9 pid声称工作。

    僵尸进程仍然活着并且工作正常,但不能被杀死?

    • 6

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve