美文网首页
你所不知道的Linux进程状态码

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

作者: liamu | 来源:发表于2018-12-05 20:29 被阅读20次

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

查看进程状态常用工具

  • ps
$ 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

  • top
  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),这个控制终端就对应一个会话。而我们在终端中运行的命令以及它们的子进程,就构成了一个个的进程组,其中,在后台运行的命令,构成后台进程组;在前台运行的命令,构成前台进程组。

为什么要知道这么多呢

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

  • 不可中断状态,表示进程正在跟硬件交互,为了保护进程数据和硬件的一致性,系统不允许其他进程或中断打断这个进程。进程长时间处于不可中断状态,通常表示系统有 I/O 性能问题。这时,你就得注意下,系统或硬件发生了故障
  • 僵尸进程表示进程已经退出,但它的父进程还没有回收子进程占用的资源。短暂的僵尸状态我们通常不必理会,但进程长时间处于僵尸状态,就应该注意了,可能有应用程序没有正常处理子进程的退出。大量的僵尸进程会用尽 PID 进程号,导致新进程不能创建,所以这种情况一定要避免。

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


不惑小年轻

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

相关文章

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

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

  • shell返回值

    shell脚本执行返回的状态码Linux下一条命令或一个进程执行完成会返回一个一个状态码。0 === 成功...

  • iOS逆向开发之ptrace汇总

    一、Linux系统进程状态 除了我们所熟知的TASK_RUNNING,TASK_INTERRUPTIBLE,TAS...

  • Linux 进程状态

    内容转自:https://cloud.tencent.com/developer/article/1568077[...

  • linux(一)进程的状态

    进程的状态 一、linux的进程查看 一般使用 ps -aux 来看 linux的进程有几个关键的信息 pid: ...

  • Linux内核学习007——进程管理(三)

    Linux内核学习007——进程管理(三) 进程状态 在进程描述符中,long类型的state描述了进程的当前状态...

  • 查看shell命令的exit返回码

    查看退出状态码 Linux 使用$? 变量保存上个执行的命令的退出状态码。你可以在要查看的命令之后立即查看或使用$...

  • Linux | Shell commands

    进程管理 Linux进程状态解析之R、S、D、T、Z、X如何在Linux中查看所有正在运行的进程我使用的命令有: ...

  • Linux的日常

    记录一些自己日常所使用到的linux命令,不断学习 ps命令 用于显示当前进程 (process) 的状态 -A ...

  • 面试题 Linux中进程有哪几种状态

    在Linux中进程有哪几种状态,每种状态代表的含义是什么?

网友评论

      本文标题:你所不知道的Linux进程状态码

      本文链接:https://www.haomeiwen.com/subject/ibxgcqtx.html