Linux 进程状态是平时排查问题、程序稳定性测试的基础知识,查看进程状态的常用工具有 top 和 ps。以 top 的输出为例:

S 列(Status)表示进程的状态,图中可见 D、R、S 状态,实际工作中,你会遇到的状态还会很多,它们及代表意义如下:

R:Running / Runnable,表示进程在 CPU 的就绪队列中,正在运行或正等待运行;

D:Dick sleep,表示不可中断睡眠状态(Uninterruptible sleep),一般说明进程正跟硬件交互中,交互过程不允许被其他进程中断;

S:Interruptble sleep,可中断睡眠状态,表示进程因为等待某个事件而被系统挂起,如等待 IO、主动调用 sleep 函数;

I:idle,不可中断睡眠的内核线程线程。同样是不可中断睡眠状态,D 表示用户空间进程,I表示内核线程。

T 或 t:Stopped / Traced,表示进程处于暂停或被跟踪状态,比如我们用 GDB 调试某个程序,那么该进程就处于被跟踪状态;

X:Dead,进程消亡,在 top 或 ps 中我们看不到这种状态;

除上述进程状态,还有诸如 Ss+、D+、S<、Ssl、SN,S 和 D 代表的意义已知,Ss+ 中的 + 表示前台进程组(进程组指的是一组相互关联的进程,如每个子进程是父进程所在组的成员,这就是一种关联关系),s 表示该进程是一个会话的领导进程(会话指的是共用同一个控制终端的一个或者多个进程组),< 表示高优先级进程,N 表示低优先级进程,l 表示线程加锁。

最后我们还需要了解一下僵尸进程和孤儿进程。

我们知道,子进程是由父进程创建的,且二者运行时相互独立,父进程无法预测子进程什么时候退出,而且当一个进程退出时内核并不会全部释放该进程占据的资源:打开的文件描述符、占用的内存等会被释放,进程号、退出状态和进程运行时间等信息依然会被保留,这些信息需要父进程使用 wait() 或者 waitpid() 调用时才会释放,我们称之为回收子进程信息。

那么就会衍生两个现象:子进程退出了,父进程没有及时回收子进程信息,子进程处于僵尸进程状态,当系统存在大量的僵尸进程就会导致系统的 PID 进程号耗尽,无法创建新进程;

子进程还没有退出,父进程提前退出了,子进程则处孤儿进程状态,孤儿状态被系统 init 进程接管,即孤儿进程的父进程 ID 为 1。

进程状态为 z(zombie)时表示该进程为僵尸进程,孤儿进程则可以通过查看其父进程名称确定是否为 init :

$ ps ax -o ppid -o pid -o command -o stat | grep ${程序名称} | grep -v grep

本文首发自公众号「 LinuxOK 」,ID 为:Linux_ok。
关注公众号第一时间获取更新,分享不仅技术文章,还有关于职场生活的碎碎念。

Linux 进程状态相关推荐

  1. Linux进程状态解析之R、S、D、T、Z、X

    文章转载自:http://hi.baidu.com/shining_pc/item/21abcb32a4d2d484c3cf2950 Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程 ...

  2. 【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )

    文章目录 一.调度器 0.调度器概念 1.调度器目的 2.调度器主要工作 3.调度器位置 4.进程优先级 5.抢占式调度器 二.Linux 内核进程状态 API 简介 三.Linux 进程状态 一.调 ...

  3. Linux进程状态解析 之 R、S、D、T、Z、X (主要有三个状态)

    linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该状 ...

  4. Linux进程状态解析

    Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有 不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态. 只有在该 ...

  5. Linux下进程状态转换,Linux进程状态转换图

    Linux进程状态 Linux内核中的进程状态 ◆运行状态(TASK_RUNNING) 指正在被CPU运行或者就绪的状态.这样的进程被成为runnning进程.运行态的进程可以分为3种情况:内核运行态 ...

  6. linux进程状态详解

    Linux是一个多用户,多任务的系统,可以同时运行多个用户的多个程序,就必然会产生很多的进程,而每个进程会有不同的状态. Linux进程状态:R (TASK_RUNNING),可执行状态 只有在该状态 ...

  7. Linux进程状态及其相互转换

    Linux进程状态及其相互转换 Linux中,进程有以下6中状态. Linux系统中的进程主要有以下六种状态. (1)TASK_RUNNING(可运行状态).正在运行的进程或在可运行进程队列(run_ ...

  8. 【Linux操作系统】Linux进程状态和两个特殊进程

    文章目录 一.一套普适性的进程状态理论 1.运行 2.阻塞 3.挂起 二.一套具体的Linux进程状态 1.R-运行 2.S-睡眠 3.T-暂停 5.t-被追踪 三.僵尸进程和孤儿进程 1.僵尸进程 ...

  9. 操作系统原理,进程的基本状态,运行态,就绪态,等待态与转换模型,进程的其他状态,创建,终止,挂起与转换模型,Linux进程状态模型示例

    操作系统原理,进程的基本状态,运行态,就绪态,等待态与转换模型,进程的其他状态,创建,终止,挂起与转换模型,Linux进程状态模型示例 一.进程的三种基本状态: 运行态,就绪态,等待态 1.运行态: ...

  10. Linux 进程状态D Disk Sleep

    Linux进程状态:S (TASK_INTERRUPTIBLE),可中断的睡眠状态 处于这个状态的进程因为等待某某事件的发生(比如等待socket连接.等待信号量),而被挂起.这些进程的task_st ...

最新文章

  1. NLP技术落地为何这么难?里面有哪些坑?
  2. 你现在还在使用刷脸支付吗?不,刷手支付已来!!!不侵犯隐私、秒速支付...
  3. Docker多台宿主机间的容器互联-centos7
  4. python中打开文件提示编码当时错误_Python:文件编码错误
  5. 数组作为方法返回值_返回地址
  6. php跨域资源共享,CORS 跨域资源共享
  7. linux cpu负载巡检,linux服务器巡检报告.doc
  8. 在另一台服务器上还原被误删的 MySQL 数据
  9. 你的简历已经被机器人筛选了
  10. Django文件上传***
  11. caffe linux跑自己数据,caffe+linux平台——跑深度学习的流程
  12. excel内容少却文件很大_009- EXCEL文件的表格内的数据内容明明不多,但是文件却变得很大...
  13. 睿思荐片--最好的电影,最全的排行
  14. 易打卡模板微信签到打卡小程序源码
  15. 宝付大叔的家书,满满的父爱
  16. crc16校验c语言单片机实现,三种常用的CRC16校验算法的C51程序的优化
  17. MapGuide的系统架构
  18. 服务网格——什么是服务网格?(概念原理1)
  19. 基于SSM框架的OA办公系统
  20. 白塑投影幕布为何深受青睐?

热门文章

  1. cookie、session、sessionId 详解
  2. 10kw全固态中波dam广播发射机的计算机监控系统分析与设计[,10KW全固态中波DAM广播发射机的计算机监控系统分析与设计...
  3. 牛顿迭代法开N次方根
  4. 如何快速有效的提高宝贝搜索排名
  5. 哈夫曼树(HuffmanTree)
  6. Linux珍藏系列图书
  7. Moto X Force公布系统源代码:ROM开发者可以动工了
  8. 订餐APP肥了餐馆饿了自己
  9. 学完java学swift_可以跳过 Objective-C 然后直接学习 Swift 语言吗?
  10. Python+selenium下载数据初探