首页 > 系统相关 >【Linux】僵尸进程、进程状态简介

【Linux】僵尸进程、进程状态简介

时间:2024-11-21 08:46:18浏览次数:3  
标签:状态 僵尸 简介 占用 Linux 进程 资源

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

| 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 |


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【K8s】专题十五(3):Kubernetes 网络之 Calico 插件理论


目录

一、僵尸进程

二、进程状态


一、僵尸进程

在 Linux 系统中,僵尸进程(Zombie Process)是一种特殊的进程状态,是指一个子进程执行完成后,其父进程尚未读取其退出状态、没有对其资源和状态信息进行回收,导致该子进程一直存在的特殊状态。

僵尸进程的产生通常有以下两种原因:

  • 父进程未回收子进程资源
    • 当一个子进程终止时,会向其父进程发送一个 SIGCHLD 信号,向父进程通知其退出状态。如果父进程没有调用 wait() 或 waitpid() 来读取子进程的退出状态并回收资源,子进程就会成为僵尸进程
  • 父进程先于子进程结束
    • 当一个子进程还未终止时,其父进程先于该子进程结束,则该子进程会变为孤儿进程,进而产生僵尸进程
    • 比较特殊的是,孤儿进程可以被系统的 init 进程(进程号为 1)接管,init 进程可以清理这些孤儿进程产生的僵尸进程

僵尸进程虽然不再占用 Linux 系统的 CPU 资源,但仍然会占用内存资源,并在系统进程表中占用位置以保留部分信息(如 PID、退出状态等)。如果系统中存在大量僵尸进程,可能导致进程表耗尽,从而无法创建新的进程,进而影响系统性能和稳定性。


二、进程状态

在 Linux 系统中,进程(Process)和线程(Thread)均由 task_struct{} 结构表示。

task_struct{} 结构实质上表示任务(Task),是 Linux 系统中调度的基本单位,通常为了简明将其统称为进程。

Linux 进程从创建(Fork)到终止(Exit)的状态转换过程如下图。

Linux 进程状态转换(来自《Linux 内核开发》)

从图中可以看到,当一个进程创建并进入活动周期后,可以在以下两种状态之间进行转换:

  • 运行状态 (Running State)
    • 运行状态通常表明进程可能处于以下两种情况
      • 进程正在运行中(已经获取到 CPU 资源)
      • 进程位于运行队列中(已经就绪,随时可以运行)
    • 通过 ps ef 命令查看时,处于该状态的进程具有 “R” 标识
  • 休眠状态 (Sleeping State)
    • 休眠状态通常表明进程正在等待特定资源(如磁盘 I/O),可以细分为 2 种子状态
      • TASK_INTERRUPTIBLE:该状态可以中断。通过 ps ef 命令查看时,处于该状态的进程具有 “S” 标识
      • TASK_UNINTERRUPTIBLE:该状态无法中断。通过 ps ef 命令查看时,处于该状态的进程具有 “D” 标识

当一个进程终止并调用 do_exit() 期间,还有两种与进程终止相关的状态:

  • EXIT_DEAD:此状态表示进程真正退出的时间
  • EXIT_ZOMBIE:此状态就在 EXIT_DEAD 之前发生,这就是通常所说的 zombie 进程

标签:状态,僵尸,简介,占用,Linux,进程,资源
From: https://blog.csdn.net/2401_82795112/article/details/143893586

相关文章

  • Thinkpad P14s 的 archlinux 成长手册(i3-wm 窗口管理器)
    目录电脑信息i3-wm快捷键分辨率调整终端版文件管理器壁纸设置触摸板配置合盖后不休眠i3配置文件截图工具剪切板i3lock-color卸载i3lock安装i3lock-color定义配置文件i3配置文件增加锁屏配置i3主题和图标修改i3工作区配置分配应用程序到工作区工作区字体修改i3启用透明效果......
  • [Linux]进程地址空间
    进程地址空间以32位机器为例程序地址空间地址空间描述的基本空间大小是字节,每个字节都要有为一的地址,所以在32位的机器下就会有2^32次方个地址,也就是4G的空间范围。这些空间被划分成为了一个个区域。范围是0x00000000-0xFFFFFFFF我们知道,在一个程序中变量或函数的地址分......
  • Linux使用finalshell连接的时候断开或者直接连接不上
    学习Linux这段时间,finalShell总是突然连接不上主机头几次出现这种情况的时候,我把主机重启,finalshell再打开突然就能连上了后边再出现的时候,我直接尝试重新连接,又能连接上了之后再次断开后,尝试多次重启重连都不行了,开始搜帖子找问题解决问题第一次,我在社区搜索很多帖子,发现有个......
  • 【Linux】开发工具(yum)
    为什么要用包管理器?(yum等)安装的步骤1.网络下载2.安装(就是往系统拷贝),必须使用root权限,安装到系统里,安装一次,任何人都能使用。(因为没有装到home里,而是装在系统里!)普通用户要使用软件,不论是可执行程序还是配置文件等,有r或x权限就行了。所以即使是拥有者和所属组都是root......
  • linux命令head,tail查询日志头部和尾部 & 查询日志的关键字的上下文日志方法
    linux命令head,tail查询日志头部和尾部&查询日志的关键字的上下文日志方法tail-n10test.log查询日志尾部最后10行的日志;tail-n-10test.log查询日志尾部最后10行的日志;同上tail-n+10test.log查询10行之后的所有日志;tail尾部,倒着数是负数。配置的是正数的话,则......
  • windows使用tasklist | findstr组合命令快速查进程
    命令解释tasklist列出进程|管道findstr/v过滤下面是系统自带的进程排除掉“notepad.execalc.execmd.exetasklist.exefindstr.exesvchost.exeSystemmsedge.exeRegistrysmss.execsrss.exewininit.exeservices.exeexplorer.exewinlogon.exelsass.exefo......
  • 信创的操作系统都是基于linux吗
    以下为智能搜索的内容:信创操作系统并不都是基于Linux进行二次开发的。根据搜索结果,国内信创操作系统主要以Linux为基础进行二次开发,但也有其他情况。以下是一些信创操作系统的相关信息:基于Linux的信创操作系统:国内信创类服务器操作系统主要分为开源社区版和商业版两大类。开......
  • windows下linux安装
    目录一、安装工具准备二、安装虚拟机1、双击VMware-workstation-full-17.0.0-20800274.exe进行安装,点击下一步2、在桌面找到VMware的图标双击运行,然后点击创建虚拟机3、安装镜像文件安装linux操作系统一、安装工具准备1、下载VMware安装包使用下面网盘连接或去官......
  • 从0开始linux(32)——进程信号(1)信号发生
    欢迎来到博主的专栏:从0开始linux博主ID:代码小豪文章目录信号信号发生键盘发生的信号信号是如何发送给进程的?信号是如何发送给系统的?其他的信号发生由系统指令发生的信号由系统调用发生的信号由软件条件引发的信号由于进程异常引发的信号Core与Term默认行为的差别......
  • 【Linux Ops】如何替换 libstdc++ 提升 GLIBCXX 版本
    【环境】kos5.8sp2,kernel5.10还是上一篇提到的那个软件环境,其依赖的GLIBCXX版本较高,因此在安装时给出了以下错误:xxx:/lib64/libstdc++.so.6:version`GLIBCXX_3.4.29'notfound(requiredbyxxx)执行strings/usr/lib64/libstdc++.so.6|grepGLIBCXX,查看当前环境中......