【Linux】进程问题--僵尸进程

僵尸进程

  • 概念:僵尸进程是子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程
  • 僵尸进程:由于各种原因导致某个进程挂掉了,但是进程本身仍然存在,还占用系统资源,这种异常进程就是僵尸进程
    • 查找:ps aux 过滤,Z状态即可找出僵尸进程,或者 top 命令查看
    • 解决:
      • 找出僵尸进程的上级进程,结束进程即可
      • 如果上级进程是主进程(pid 为 1 的进程),则需要重启 Linux 系统
      • 在这里插入图片描述

模拟僵尸进程

# c 语言编译器
yum install -y gcc
# zombie.c 代码
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

/*
 * 描述:用于模拟僵尸进程的代码
 */
int main(int argc, char *argv[])
{
  pid_t pid;
  pid = fork();
  
  if(pid == 0) {
    int iPid = (int)getpid();
    fprintf(stderr,"I am child,%d\n",iPid);
    sleep(1);
    fprintf(stderr,"child exits\n");
    return EXIT_SUCCESS;
  }
  
  int iPid = (int)getpid();
  fprintf(stderr,"I am parent,%d\n",iPid);
  fprintf(stderr,"sleep....\n");
  sleep(600);
  fprintf(stderr,"parent exits\n");
  return EXIT_SUCCESS;`在这里插入代码片`
}
# 编译 c 语言代码
# -o 指定输出名
gcc zombie.c -o zombie.bin

在这里插入图片描述

./zombie.bin  # 运行

在这里插入图片描述

查询

top

在这里插入图片描述

ps aux | grep Z # 当前进程 2129

在这里插入图片描述

pstree -p | grep 2129

在这里插入图片描述

# 结束进程,结束不掉
kill 2129
kill -9 2129

在这里插入图片描述

# 结束父进程
kill 2128

ps aux | grep Z # 也看不到僵尸进程了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值