Linux进程状态总结


  • R(Task Running),处于执行中或者可执行的处于CPU队列中的线程状态。
  • S(TASK_INTERRUPTIBLE),处于睡眠状态,可被中断唤醒。
  • D(TASK_UNINTERRUPTIBLE),处于休眠状态,不可中断,意味着不会响应信号,例如使用kill无法杀死进程。
  • T (TASK_STOPPED or TASK_TRACED), 进程停止或者跟踪状态,进程接收到信息SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号以后处于这两个状态。处于TASK_STOPPED状态的线程收到 SIGCONT可以恢复到TASK_RUNNING状态。
  • Z (TASK_DEAD - EXIT_ZOMBIE)退出状态,进程成为僵尸进程 ,进程已经处于推出状态,但是还保留这task_struct,等待父进程的回收。
  • X (TASK_DEAD - EXIT_DEAD)退出状态,进程即将被销毁,正常情况下应该几乎看不到处于这个状态的进程。

一般而言,在Linux系统下可以通过ps aux命令查看到所有的进程信息,其中STAT列,表示的就是进程的状态。通常青枯杨下还会跟随如下信息,表示更加详细的状态。

  • < 高优先级
  • N 低优先级
  • L 有页在内存中处于locked状态
  • s进程领导者,含有子进程。
  • I 多线程
  • +位于前台进程组

我们经常采用vmstat 2命令查看当前系统的CPU队列,队列中有两列r和b,r代表运行中的或者处于可运行状态的CPU队列长度,如果这个长度超过CPU的核数,则代表目前已经过过载,因为CPU来不及处理当前的线程。

b代表的是被阻塞的线程,可以看作是处于S、D、T状态的线程数量。

上一篇:top命令手册


下一篇:《MySQL技术内幕:InnoDB存储引擎第2版》——2.3 InnoDB体系架构