你所不知道的Linux进程状态码

2018-12-05  本文已影响20人  liamu

微信公众号:不惑小年轻
关注可了解更多的学习资料与编程技巧。问题或建议,请公众号留言;
如果你觉得我的文章对你有帮助,欢迎赞赏[^1]

查看进程状态常用工具

$ ps aux
root      4009  0.0  0.0   4376  1008 pts/0    Ss+  05:51   0:00 /app
root      4287  0.6  0.4  37280 33660 pts/0    D+   05:54   0:00 /app
root      4288  0.6  0.4  37280 33668 pts/0    D+   05:54   0:00 /app
root       455  0.0  0.7  39956  7312 ?        Ssl  11月26   0:00 /usr/sbin/lig
root       446  0.0  0.0      0     0 ?        S<   11月26   0:00 [kworker/2:1H

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
28961 root      20   0   43816   3148   4040 R   3.2  0.0   0:00.01 top
  620 root      20   0   37280  33676    908 D   0.3  0.4   0:00.01 app
    1 root      20   0  160072   9416   6752 S   0.0  0.1   0:37.64 systemd
 1896 root      20   0       0      0      0 Z   0.0  0.0   0:00.00 devapp
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.10 kthreadd
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
    6 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
    7 root      20   0       0      0      0 S   0.0  0.0   0:06.37 ksoftirqd/0

进程状态说明

状态 说明
R Running 或 Runnable 的缩写,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行
D Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其他进程或中断打断
Z Zombie的缩写,它表示僵尸进程,也就是进程实际上已经结束了,但是父进程还没有回收它的资源(比如进程的描述符、PID 等)
S Interruptible Sleep 的缩写,也就是可中断状态睡眠,表示进程因为等待某个事件而被系统挂起。当进程等待的事件发生时,它会被唤醒并进入 R 状态
I Idle 的缩写,也就是空闲状态,用在不可中断睡眠的内核线程上。前面说了,硬件交互导致的不可中断进程用 D 表示,但对某些内核线程来说,它们有可能实际上并没有任何负载,用 Idle 正是为了区分这种情况。要注意,D 状态的进程会导致平均负载升高, I 状态的进程却不会
T或者t Stopped 或 Traced 的缩写,表示进程处于暂停或者跟踪状态。向一个进程发送 SIGSTOP 信号,它就会因响应这个信号变成暂停状态(Stopped);再向它发送 SIGCONT 信号,进程又会恢复运行(如果进程是终端里直接启动的,则需要你用 fg 命令,恢复到前台运行)。而当你用调试器(如 gdb)调试一个进程时,在使用断点中断进程后,进程就会变成跟踪状态,这其实也是一种特殊的暂停状态,只不过你可以用调试器来跟踪并按需要控制进程的运行
X Dead 的缩写,表示进程已经消亡
s 表示这个进程是一个会话的领导进程
+ 表示前台进程组
< 优先级较高的进程
l 以线程的方式运行

进程组:表示一组相互关联的进程,比如每个子进程都是父进程所在组的成员;
会 话:指共享同一个控制终端的一个或多个进程组
我们通过 SSH 登录服务器,就会打开一个控制终端(TTY),这个控制终端就对应一个会话。而我们在终端中运行的命令以及它们的子进程,就构成了一个个的进程组,其中,在后台运行的命令,构成后台进程组;在前台运行的命令,构成前台进程组。

为什么要知道这么多呢

熟悉了几个必备的进程状态可以帮助我们快速定位服务器问题,使得系统一直处于高效的运行状态。


下面的是我的公众号二维码图片,欢迎关注。


不惑小年轻

最后的有个好消息要告诉大家,
有大额红包可以领了!
打开支付宝,首页搜“517052075”,就能领到几块到几十块不等的大额大额红包,线上购物或者到线下使用支付宝付款,可以直接抵扣现金。

上一篇 下一篇

猜你喜欢

热点阅读