0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何查看系统是否有僵尸进程

要长高 来源:eetop 作者:wangjicheng886 2023-11-29 15:52 次阅读

1、查看系统是否有僵尸进程

使用Top命令查找,当zombie前的数量不为0时,即系统内存在相应数量的僵尸进程。

wKgaomVm7UeAWCgqAASy3vXx9DY652.png

2、定位僵尸进程

使用命令ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’定位僵尸进程以及该僵尸进程的父进程。

3、杀死僵尸进程

使用Kill -HUP 僵尸进程ID来杀死僵尸进程,往往此种情况无法杀死僵尸进程,此时就需要杀死僵尸进程的父进程。

kill -HUP 僵尸进程父ID

然后使用上面第二步的语句查询该僵尸进程是否被杀死。

4、参数解读

ps -A -ostat,ppid,pid,cmd |grep -e ‘^[Zz]’

-A 参数列出所有进程

-o 自定义输出字段 stat(状态)、ppid(进程父id)、pid(进程id)、cmd(命令)

因为状态为z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程

linux僵尸进程及僵尸进程的处理

僵尸进程

(1)进程中的指令已经执行完成,但是进程PCB结构还没有回收。

即子进程先于父进程退出后,子进程的PCB需要其父进程释放,但是父进程并没有释放子进程的PCB,这样的子进程就称为僵尸进程。

(2)父进程未结束,子进程结束,但父进程没有处理子进程的退出状态(当子进程先于父进程结束,父进程没有获取子进程的退出码,子进程的PCB会保留一段时间等待父进程在PCB中获取退出码,,且该进程不可执行,此时子进程变成僵尸进程)。

直到父进程获取到子进程的退出状态,子进程的PCB才会被移除。

我们的程序在退出的时候:return 0,exit(0),这个0就是退出码(状态信息),它存储在当前进程的PCB中,会有一个整型值来存储退出码。

当我们子进程结束以后,会把退出码写到PCB中,然后希望父进程可以获得到这个退出码,然后父进程就可以看到子进程是正常运行结束还是出错退出。正常的话我们return 0,失败的话我们return -1。

僵死进程产生了,会有什么影响?

如果只有一两个僵死进程,没有什么影响。

如果有很多个僵死进程,持续不断的产生,就有影响了,因为子进程的PCB如果没有被释放,进程的PID就被一直占着,在内核空间中,PCB本身是结构体,会占用内存空间,对系统软硬件资源损耗,因此我们要避免僵死进程的产生,父进程有义务去处理!

Linux环境下查看以及杀死僵尸进程

杀死僵尸进程,方法三比较好用,推荐使用

1、查看所有的僵尸进程

ps -A -ostat,pid,ppid | grep -e ‘[zZ]’

例:Z 110 101

这列出了僵尸进程STAT列,进程ID、父进程ID

2、杀死所有僵尸进程

方法一:通过向父进程发送信号方式杀死,这种方法适用用父进程可以处理信号的情况

kill -s SIGCHLD 101

方法二:通过父进程杀死僵尸进程

kill -HUP 僵尸进程父ID

方法三:直接杀死所有僵尸进程

ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’ | awk -F“ ” ‘{ print $2 }’ | xargs kill -HUP

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206734
  • 进程
    +关注

    关注

    0

    文章

    193

    浏览量

    13876
  • PCB
    PCB
    +关注

    关注

    1

    文章

    1576

    浏览量

    13204
收藏 人收藏

    评论

    相关推荐

    Linux 查看进程和删除进程

    ps 命令用于查看当前正在运行的进程。grep 是搜索例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程
    发表于 04-24 00:04

    孤儿进程僵尸进程

    前段时间,由于研究经典面试题,把孤儿进程僵尸进程也总结了一下。我们有这样一个问题:孤儿进程僵尸进程
    发表于 11-29 14:08

    Linux如何查看进程和端口

    1、根据进程查看进程信息,以查看tomcat进程名为例,查看所对应的
    发表于 07-22 08:24

    什么是僵尸进程和孤儿进程

    在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这
    发表于 08-02 08:36

    为什么会出现LINUX僵尸进程

    僵尸进程出现在父进程没有回收子进程的PCB的时候,这个时候子进程已经结束,但是父进程没有回收他,
    发表于 08-07 06:48

    linux系统进程怎么查看与控制

    linux系统进程查看与控制
    发表于 05-28 11:02

    Linux系统进程如何查看及控制

    Linux系统进程查看及控制
    发表于 06-09 08:34

    进程几种状态?

    文章目录操作系统进程和线程什么是进程?什么是线程?进程和线程什么区别?何时使用多进程,何时使用
    发表于 12-24 07:16

    哪些进程会占用我们过多的内存和CPU信息呢?如何查看

    显示当前系统进程状态。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、有没有僵尸
    发表于 06-20 18:12

    僵尸进程的产生介绍和危害以及解决方法

    如果你经常使用 Linux,你应该遇到这个术语“僵尸进程Zombie Processes”。 那么什么是僵尸进程? 它们是怎么产生的? 它们是否
    的头像 发表于 12-18 15:56 5498次阅读
    <b class='flag-5'>僵尸</b><b class='flag-5'>进程</b>的产生介绍和危害以及解决方法

    什么是僵尸进程_Linux僵尸进程可以被“杀死”吗?

    首先要明确一点,僵尸进程的含义是:子进程已经死了,但是父进程还没有wait它的一个中间状态,这个时候子进程是一个
    的头像 发表于 07-28 10:09 4454次阅读
    什么是<b class='flag-5'>僵尸</b><b class='flag-5'>进程</b>_Linux<b class='flag-5'>僵尸</b><b class='flag-5'>进程</b>可以被“杀死”吗?

    你知道僵尸进程是个什么东西?

    在UNIX系统中,僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误或收到终止信号所致)但在操作系统
    发表于 04-22 17:50 1146次阅读

    Linux 系统僵尸进程

    不合理,父进程从不调用 wait 等系统调用来收集僵尸进程,那么这些进程会一直存在内存中。在 Linux 下,我们可以使用 ps 等命令
    发表于 04-02 14:40 356次阅读

    Linux僵尸进程会被杀死吗?

    那么,根据POSIX标准关于信号(signal)的定义,当我们执行kill -9 4730(4730是4730和4731的TGID,也是整个进程用户态视角的PID)的时候,是要杀死整个4730进程的,所以这个时候4731被我们杀死,整个
    发表于 08-07 16:48 286次阅读
    Linux<b class='flag-5'>僵尸</b><b class='flag-5'>进程</b>会被杀死吗?

    linux查看weblogic进程

    在Linux操作系统中,WebLogic是一种常用的Java应用服务器,用于部署和管理企业级Java应用程序。为了确保WebLogic服务器正常运行,有时我们需要查看WebLogic进程以了解其状态
    的头像 发表于 12-05 16:07 730次阅读