首页 > 系统相关 >Linux-进程管理(1)Linux进程睡眠状态 disk sleep (kill -9 杀不掉D状态进程)

Linux-进程管理(1)Linux进程睡眠状态 disk sleep (kill -9 杀不掉D状态进程)

时间:2022-08-17 18:36:10浏览次数:142  
标签:状态 00 kill Linux 进程 sleep disk

参考文档
Linux进程睡眠状态disk sleep

1. Linux进程状态

Running(R):运行或将要运行
Interruptible(S):被阻断而等待一个事件,可能会被一个信号**
Uninterruptible(D):被阻断而等待一个事件,不会被信号**
Stopped(T):由于任务的控制或者外部的追踪而被终止,比如:strace
Zombie(Z):僵死,但是它的父进程尚未调用wait函数.
Deal(X):这个永远看不见

2. 睡眠状态disk sleep

Linux进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,也是可以kill的,进程状态如下

#cat /proc/[pid]/status
Name:   sysmgt
State:  S (sleeping)

另外一种睡眠状态是uninterruptible sleep,处在这种状态的进程不接受外来的任何信号,这也是为什么之前我无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill -9″还是”kill -15″,因为它们压根儿就不受这些信号的支配。

#cat /proc/[pid]/status
Name:   sysmgt
State:  D (disk sleeping)

进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被 ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了,我这里遇到的问题就是由互斥锁引起的,比如说我开了8个进程同时访问一个io,访问的时候势必会加锁来保护资源,那么,当一个进程正在访问的时候,其他进程如果在等待锁,那么就会进入disk sleep,当你执行kill,它不会立即响应,当锁满足条件的时候才可能响应信号。https://blog.csdn.net/davion_zhang/article/details/48268319

3. 场景重现

今天遇到云主机系统盘磁盘占用率100%,(因之前运维部署失误导致现存问题),主机有挂载nfs存储,将系统盘大文件拷贝到nfs中使用mv或者cp命令直接变成D状态进程。

[root@iZ25l1lr9hoZ ~]# ps -ef | grep mv
root      1261 32321  0 15:11 pts/8    00:00:00 grep mv
root     31838     1  0 14:47 ?        00:00:00 mv -i ./logdb20210407110846705  /filebackup/logdbcopy-backup 
[root@iZ25l1lr9hoZ ~]# kill -9 31838  ==>kill -9 杀不掉进程
[root@iZ25l1lr9hoZ ~]# ps -ef | grep mv
root      1261 32321  0 15:11 pts/8    00:00:00 grep mv
root     31838     1  0 14:47 ?        00:00:00 mv -i ./logdb20210407110846705  /filebackup/logdbcopy-backup 


[root@iZ25l1lr9hoZ ~]# cat /proc/31838/status
Name:	mv
State:	D (disk sleep)
Tgid:	31838
Pid:	31838
PPid:	1
...

4. 解决方案

D状态(disk sleep)进程用kill -9命令是不管用的,最简单的方法就是reboot重启, 除此还可以修改内核,将其进程状态转化为别的状态,然后kill掉,非必要不建议修改内核影响不确定

标签:状态,00,kill,Linux,进程,sleep,disk
From: https://www.cnblogs.com/muzlei/p/16596328.html

相关文章

  • linux 中awk命令跳出外层循环的方法
     001、(base)root@PC1:/home/test4#lsa.txt(base)root@PC1:/home/test4#cata.txt##测试数据##1##2##34i6y#kkmma97......
  • 在linux服务器上搭建FTP服务器
    一、在Linux服务器上安装vsftpyum-yinstallvsftpd二、编辑vsftp.conf文件 参数作用listen=[YES|NO]是否以独立运......
  • linux常用命令
    linux常用基础命令目录环境绝对路径、相对路径绝对路径路径的全称:C:\ProgramFiles\InternetExplorer命令用法:命令空格参数空格文件cd:切换目录cd./:当前目......
  • Rocky Linux8升级9随记
    发现RockyLinux已经升级了9.0版本,看着自己用着的8.5版本,跃跃欲试,于是就索性升级了。两者的支持年限没有太大的差别,先说我的想法:升不升级无所谓。并不是9.0有什么特别牛......
  • linux 中sed命令 P和p的区别
     001:p:输出缓冲区中的所有内容。P:输出缓冲区中一个个换行符之前的内容(base)root@PC1:/home/test4#lsa.txt(base)root@PC1:/home/test4#cata.txt12345......
  • Linux同步网络时间
    CentOS服务器1、获取当前系统时间#date2、安装ntp#yum-yinstallntp3、修改时区#ln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime4、同步网络时间#ntpd......
  • linux系统目录及作用
    /binbin是binary的缩写。这个目录沿袭了UNIX系统的结构,存放着使用者最经常使用的命令。例如cp、ls、cat等等。/boot这里存放的是启动Linux时使用的一些核心文件。/devdev是......
  • Linux下安装宋体和微软雅黑字体
    背景最近工作用itext生成pdf在windows环境下没有出现中文乱码而在linux下出现中文乱码,打开pdf查看pdf编码,以及显示的编码,发现编码并没有对应。原因是使用的宋体和微软雅黑......
  • Nodejs 多进程与多线程
    为什么要使用多进程多进程与多线程介绍Nodejs多进程和多线程使用与区别cluster为什么需要多进程nodejs单线程,在处理http请求的时候一个错误都会导致进程退出,这是灾......
  • 《Linux内核设计的艺术》——3.进程1
    0.前言现在已经有了处于特权3的进程0,将使用fork出进程1,之后的进程也使用fork。voidmain(){sti();move_to_user_mode();//切换到特权3if(!fork()){......