Linux基础--进程状态

1. 小声哔哔

    做生产环境运维时我们经常会执行ps –aux命令来查看服务的状态,其中会有一列代表着服务进程状态,那么这个进程状态具体有什么含义呢,相信刚入坑的小伙伴一定很好奇,下面我将简单的介绍下各个进程状态的标识及需要注意的进程状态。

 

2.正餐开始

  • R状态

    Running或Runnable的缩写,表示进程在CPU的就绪队列中,正在运行或者正在等待运行。

  • D状态

    Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断。如果你凑巧遇到一个长时间处于D状态的进程,你会发现即使我们使用kill -9命令都无法将其打断。其实这个很好理解,D状态存在的意义就是Linux内核总有一些进程执行时不能被打断,否则会引发更大的问题,如果这类进程还响应异步信号,那么有可能会将原有进程打断。

  • Z状态

    Zombie表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)。
    僵尸进程是我们需要特别关注的进程,他代表着进程无法被回收,还占用着系统资源,如果数量过多且持续很久,我们就需要尽快处理,而处理方式就是将僵尸进程的父进程杀死,而后系统会将子进程的资源回收。

  • S状态

    Interruptible Sleep的缩写,也就是可中断状态睡眠,表示进程因为等待某个事件(比如等待socket连接、等待信号量)而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R 状态,这里的等待事件触发一般是外部中断触发,或者是其他进程触发。
    如果使用ps -aux命令或者top查看所有进程,你会发现大部分的进程状态都是S状态,毕竟CPU是有限的。

  • I状态

    是Idle的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。前面说了,硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。要注意,D 状态的进程会导致平均负载升高, I 状态的进程却不会。

  • T或者t状态

    T状态指Stopped状态,向进程发送SIGSTOP信号,它就会因响应该信号而进入Stopped状态。向进程发送一个SIGCONT信号,可以让其从Stopped状态恢复到Running状态。
    t状态指traced状态,当线程被跟踪时他就处于traced状态,进程被跟踪时需要将进程停下,等待跟踪他的进程对他操作。
   T状态和t状态本身很相像,都是让进程暂停,但是t状态的进程不会因为SIGCONT信号而被唤醒,必须等到调试他的进程执行PTRACE_CONT、PTRACE_DETACH等操作或者调试进程退出,被调试的进程才能恢复到Running状态。

  • X状态

    也就是 Dead 的缩写,表示进程已经消亡,所以你不会在 top 或者 ps 命令中看到它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值