长期生活在 Linux 环境里,渐渐地就有一种环保意识油然而生。比如,我们会在登录提示里写上“悟空,我跟你说过叫你不要乱扔东西,乱扔东西是不对的。哎呀我话没说完你怎么把棍子扔掉了?月光宝盒是宝物,乱扔它会污染环境,要是砸到小朋友怎么办?就算砸不到小朋友,砸到了花花草草也不好嘛…”;在用户缺省目录里放一个题为 “自觉保护环境 请勿堆放垃圾”的空文件,并用 chattr +i 设为不可修改;看到垃圾文件就立即扫入 /tmp 目录,然后发广播通知垃圾制造者自己去 /tmp 认领,且警告其下不为例…我们深知,系统环境的整洁有利于系统管理员保持良好的心情、清晰的思路和稳定的工作状态。

有一类垃圾却并非这么容易打扫,那就是我们常见的状态为 D (Uninterruptible sleep) ,以及状态为 Z (Zombie) 的垃圾进程。这些垃圾进程要么是求而不得,像怨妇一般等待资源(D),要么是僵而不死,像冤魂一样等待超度(Z),它们在 CPU run_queue 里滞留不去,把 Load Average 弄的老高老高,没看过我前一篇blog的国际友人还以为这儿民怨沸腾又出了什么大事呢。怎么办?开枪!kill -9!看你们走是不走。但这两种垃圾进程偏偏是刀枪不入的,不管换哪种枪法都杀不掉它们。无奈,只好reboot,像剿灭禽流感那样不分青红皂白地一律扑杀!

悟空,我们所运维的可是24*7全天候对外部客户服务的系统,怎么能动不动就 reboot ?我们的考核指标可是4个9(99.99%,全年计划外当机时间不得超过52分钟34秒),又不是4个8,你稍微遇到点事就reboot,还要不要可用性了?再说,现在社会都开始奔和谐去了,我们对于 D 和 Z 这两种垃圾进程,也该尽可能采取慈悲手段,能解决其困难的,就创造条件,解决其实际困难,能消除其冤结的,就诵经烧纸,消除其前世冤结,具体问题应具体分析具体解决,滥杀无辜只会导致冤冤相报因果循环…$^#$%#%^@#

贫僧还是回来说正题。怨妇 D,往往是由于 I/O 资源得不到满足,而引发等待,在内核源码 fs/proc/array.c 里,其文字定义为“ “D (disk sleep)”, /* 2 */ ”(由此可知 D 原是Disk的打头字母),对应着 include/linux/sched.h 里的“ #define TASK_UNINTERRUPTIBLE 2 ”。举个例子,当 NFS 服务端关闭之时,若未事先 umount 相关目录,在 NFS 客户端执行 df 就会挂住整个登录会话,按 Ctrl+C 、Ctrl+Z 都无济于事。断开连接再登录,执行 ps axf 则看到刚才的 df 进程状态位已变成了 D ,kill -9 无法杀灭。正确的处理方式,是马上恢复 NFS 服务端,再度提供服务,刚才挂起的 df 进程发现了其苦苦等待的资源,便完成任务,自动消亡。若 NFS 服务端无法恢复服务,在 reboot 之前也应将 /etc/mtab 里的相关 NFS mount 项删除,以免 reboot 过程例行调用 netfs stop 时再次发生等待资源,导致系统重启过程挂起。

D是处于TASK_UNINTERRUPTIBLE的进程,深度睡眠,不响应信号。 一般只有等待非常关键的事件时,才把进程设为这个状态。

冤魂 Z 之所以杀不死,是因为它已经死了,否则怎么叫 Zombie(僵尸)呢?冤魂不散,自然是生前有结未解之故。在UNIX/Linux中,每个进程都有一个父进程,进程号叫PID(Process ID),相应地,父进程号就叫PPID(Parent PID)。当进程死亡时,它会自动关闭已打开的文件,舍弃已占用的内存、交换空间等等系统资源,然后向其父进程返回一个退出状态值,报告死讯。如果程序有 bug,就会在这最后一步出问题。儿子说我死了,老子却没听见,没有及时收棺入殓,儿子便成了僵尸。在UNIX/Linux中消灭僵尸的手段比较残忍,执行 ps axjf 找出僵尸进程的父进程号(PPID,第一列),先杀其父,然后再由进程天子 init(其PID为1,PPID为0)来一起收拾父子僵尸,超度亡魂,往生极乐。注意,子进程变成僵尸只是碍眼而已,并不碍事,如果僵尸的父进程当前有要务在身,则千万不可贸然杀之。

注意:不是所有状态为Z的进程都是无法收拾的,很可能是那个短暂的状态刚好被你发现了。

linux php d 含义,Linux中状态为D 或Z 的进程相关推荐

  1. linux日志配置含义,Linux操作系统中的日志功能详解

    日志系统将我们系统运行的每一个状况信息都使用文字记录下来,这些信息有助我们观察系统运行过程中正常状态和系统运行错误时快速定位错误位置的途径等;下面学习啦小编主要概述一下Linux操作系统中的日志功能. ...

  2. linux硬链接含义,Linux中硬链接与软链接

    一.硬链接 (一)什么是硬链接 硬链接是指通过索引节点来进行链接.在Linux中一个索引节点可能被多个文件名指向,这样就会产生多个硬链接,它的作用是可以防止误删文件.删除其中一种硬链接并不影响索引节点 ...

  3. linux操作系统字段含义,Linux系统 /etc/fstab各个字段含义解释

    Linux系统 /etc/fstab各个字段含义解释 # fstab文件的作用 文件/etc/fstab存放的是系统中的文件系统信息.当正确的设置了该文件,则可以通过"mount /dire ...

  4. linux编译安装含义,linux源码包编译安装详解

    linux下安装软件包有两种方法:源文件编译安装(source)和 rpm 安装. 1.源文件包安装的通用方法. 一般安装源代码的程序你得要看它的README,一般在它的目录下都有的. 01.配置: ...

  5. linux su 的含义,linux su命令的真正含义,linuxsu命令

    linux su命令的真正含义,linuxsu命令 linux中,我以root登录,和以其他用户登录然后使用su命令切换至root用户,有什么不一样,如果一样的话,我执行su命令之后,其他的用户还在不 ...

  6. linux指令英文含义,Linux —— 常见指令及其英文全称

    alias:给命令起别名 awk = "Aho Weiberger and Kernighan" ,三个作者的姓的第一个字母 bash:GNU Bourne-Again Shell ...

  7. linux终端提示符含义,Linux:终端提示符 (prompt) 不如期生效原因

    前言 先来简单介绍下, prompt是什么鬼? 顾名思义就是提示符的意思, 看起来和我们遥远, 但实际上只要是每个接触shell的童鞋, 都有看到, 那就是我们在输命令时前面的那串提示符. 例如: 当 ...

  8. linux命令的含义,Linux常见命令及含义

    1.查看目录结构 ls(list) :列出 ll :列出当前目录下的文件信息 ls -al :列出当前目录下的文件信息(包括隐藏文件,特殊目录) ll /bin/ :列出根目录下bin目录下的文件信息 ...

  9. linux系统端口的5种状态及含义

    linux系统端口的5种状态及含义 1.listening 监听状态 说明该端口是开放的,正在等待连接,但是还没有被连接:2.established 正在建立连接 标识两台机器正在通信中:3.time ...

最新文章

  1. 【Flutter】Animation 动画 ( Flutter 动画类型 | Flutter 动画的核心类 )
  2. 带着问题学 Kubernetes 架构!
  3. ET框架笔记 (笑览世界写)(转)
  4. recv 和 send 阻塞和非阻塞的区别
  5. IOS开发基础之手势解锁项目案例
  6. C++爬虫项目爬取图片
  7. Oracle中通过:触发器,存储过程,Function调用实现解析Clob字段类型中存储的xml字符串...
  8. 携号转网时间明确了: 下半年在全国实施!
  9. how to make milt-Lang windows installer All in 1
  10. 中国塑料箱市场趋势报告、技术动态创新及市场预测
  11. C++makefile编写
  12. 函数指针作为函数參数,实现冒泡排序的升序排序和降序排序
  13. java native2ascii的用法介绍
  14. [云原生专题-3]:云平台 - 云计算平台快速入门
  15. python数学篇(经典算法题)
  16. Window 10 python 3.7安装 PyV8
  17. 基于单片机的热敏电阻测温设计
  18. 网易云音乐安装完成以后点击图标打不开的解决办法
  19. android 主流分辨率是多少,android手机常用分辨率有哪些?
  20. 粥佐罗时间管理课学习笔记

热门文章

  1. DJYGUI系列文章十一:GDD矩形区域运算
  2. ubuntu+windows双系统遇到的无限网卡驱动问题(神舟精盾u47s2)
  3. 主流Web应用服务器简介
  4. 解决Flutter旋转屏幕状态栏空缺的问题
  5. XmlMapper详解及工具类封装
  6. matlab构建栅格地图绘图思路
  7. TEXTBOX中的换行
  8. XML文件与xsl文件的作用与关系
  9. 省厅计算机中级培训班,省审计厅第六期计算机中级水平培训班在张掖开班
  10. 华为云算法:教你零基础AI试妆