linux 多进程广播通知,linux进程状态D
运行在KVM虚拟机里的一些进程突然出了问题,这些出了问题的进程无法用kill杀掉,使用ps可以看到这些进程处于D状态:
[build@kbuild-john ~]$ ps -a -ubuild -o pid,ppid,stat,command
PID PPID STAT COMMAND
17009 1 Ds -bash
17065 1 D ls --color=tty -al
17577 1 D /usr/java/jdk1.5.0_17/bin/java -Xmx512m -classpath /usr/local/a
17629 1 D /usr/java/jdk1.5.0_17/bin/java -Xmx512m -classpath /usr/local/a
ps 的手册里说D状态是uninterruptible sleep,Linux进程有两种睡眠状态,一种interruptible
sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发HUP信号给nginx的master进程可以让nginx重新加载配置文件而
不需要重新启动nginx进程;另外一种睡眠状态是uninterruptible
sleep,处在这种状态的进程不接受外来的任何信号,这也是为什么之前我无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill
-9″还是”kill -15″,因为它们压根儿就不受这些信号的支配。
进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible
sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被
ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了,我这里遇到的问题就是由
down掉的NFS服务器引起的。
正是因为得不到IO的相应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible
sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible
sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统了。
看到有人说如果要想杀掉D状态的进程,通常可以去杀掉它的父进程(通常是shell,我理解的这种情况是在shell下直接运行的该进程,之后
该进程转入了D状态),于是我就照做了,之后就出现了上面的状态:他们的父进程被杀掉了,但是他们的父进程PID都变成了1,也就是init进程,这下可
如何是好?此时我这些D状态的进程已经影响到其他一些进程的运行,而已经无法访问的NFS卷又在段时间内无法恢复,那么,只好重新启动了,root不是玉
皇大帝,也有无奈的时候。
跟czhang说起这个事,觉得Linux如果有这么一个专用的垃圾回收进程就好了:系统自动或者用户手动把僵尸进程,和比如之前我遇到的D状态进程的PPID设为这个垃圾回收进程,那么通过干掉这个垃圾回收进程来清理这些僵尸们,这样该有多美好…
linux 多进程广播通知,linux进程状态D相关推荐
- linux视频广播,在 Linux 终端收听广播
原标题:在 Linux 终端收听广播 编译自: https://opensource.com/article/18/12/linux-toy-mplayer 作者: Jason Baker 译者: g ...
- linux多进程条件变量,Linux 多线程条件变量同步
条件变量是线程同步的另一种方式,实际上,条件变量是信号量的底层实现,这也就意味着,使用条件变量可以拥有更大的自由度,同时也就需要更加小心的进行同步操作.条件变量使用的条件本身是需要使用互斥量进行保护的 ...
- linux多进程spawn,【Linux Shell脚本编程】expect解决脚本交互 + Shell的多进程处理
如果在没有使用密钥认证的情况下,想通过SSH来传输文件给多个主机会面临交互的问题,这在脚本中是非常不友好的.要解决这个问题的话可以使用expect这个工具,它的功能就是提前把交互中需要的内容先写好,然 ...
- linux多进程网络实例,Linux下一个单进程并发服务器的实例 使用select
/*单进程并发服务器实例.该程序采用单进程并发服务器算法实现的.*/ #include #include #include #include #include #include #include #i ...
- HTTP服务器项目2:Linux多进程开发
HTTP服务器项目2:Linux多进程开发 1.进程概述: 01 / 程序和进程 程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程: ◼ 二进制格式标识:每个程序文件都包含用于描述可 ...
- Linux 多进程开发
Linux多进程开发 文章目录 进程概述 程序与进程 单道.多道程序设计 时间片 并行和并发 进程状态转换 进程的状态 进程相关命令 进程号和相关函数 进程创建 父子进程的虚拟地址空间 父子进程之间的 ...
- Linux多进程编程(2)
简介 IPC(Inter Process Communication,进程间通信)的方式总共有三种,分别是信号量.共享内存和消息队列,本文介绍前两种. 在Linux中,进程之间操作公共数据时,需要进行 ...
- Linux 高并发服务器实战 - 2 Linux多进程开发
Linux 高并发服务器实战 - 2 Linux多进程开发 进程概述 概念1: 概念2: 微观而言,单CPU任意时刻只能运行一个程序 并发:两个队列交替使用一台咖啡机 并行:两个队列同时使用两台咖啡机 ...
- 【Linux】进程概念与进程状态
文章目录 一.什么是进程 1.进程概念 2.进程描述 -- PCB 二.进程的一些基本操作 1.查看进程 2.结束进程 2.通过系统调用获取进程标示符 3.通过系统调用创建子进程 三.进程状态 1.普 ...
最新文章
- WIN10 右键 powershell 修改
- 语音合成(文字转语音)工具大全
- 【学习笔记】Tableau基础介绍
- 在linux下搭建jira+svn[原创]
- (转)svn检出的时候报 Unable to connect to a repository at URL错误
- jQuery如何在线导入js包
- OJ1003: 两个整数的四则运算
- UVA11219 How old are you?【日期】
- python基础补漏-03-函数
- P3317 [SDOI2014]重建
- 历年系统架构师论文题目总结(2012-2018)
- UnRaid配置文件、启动U盘定时备份方案
- mini_c编译器的简单代码逻辑
- Centos8Web服务器搭建
- 第一章 古代东方文明
- mindspore详解
- 堰流实验报告思考题_水力学思考题 -
- 离散数学学习笔记-2-群 子群
- 使用 Kubernetes 和 Istio 进行基于容器的全面服务监控
- 财务数据中台架构及建设方案(ppt)