首页
学习
活动
专区
圈层
工具
发布

Linux进程的Uninterruptible sleep(D)状态

Linux 进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发 HUP 信号给 nginx 的 master 进程可以让 nginx...Linux进程的睡眠状态有2种:     一种是可中断睡眠,其标志位是TASK_INTERRUPTIBLE ,可中断的睡眠状态的进程会睡眠直到某个条件变为真,比如说产生一个硬件中断、释放进程正在等待的系统资源或是传递一个信号都可以是唤醒进程的条件...NFS 卷不可访问导致进程进入 D状态的,那么可以通过恢复该 NFS 卷的连接来使进程的 IO 请求得到满足,除此之外,要想干掉处在 D 状态进程就只能重启整个 Linux 系统了。...如果为了想要杀掉 D 状态的进程,而去杀掉它的父进程(通常是shell,在shell下允许某进程,然后某进程转入D状态),就会出现这样的状态:他们的父进程被杀掉了,但是他们的父进程 PID 都变成了1,...也就是 init 进程,D状态的进程会变成僵尸进程。

12K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Linux中查看进程、杀死进程、进入进程的命令

    2.杀死进程    使用kill命令结束进程:kill xxx    常用:kill -9 324    Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:...324的进程: #kill -9 324 (2)解除Linux系统的死锁 在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。...(4)killall命令 Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如: # killall -HUP inetd *杀死进程最安全的方法是单纯使用kill...然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。...当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。

    16.6K30

    Linux 中 D 状态的进程与平均负载

    这篇文章聊聊 Linux 中 D 状态的进程与平均负载的关系,通过阅读本文,你会了解到这些东西。...D 状态的进程是什么 如何编写内核模块模拟 D 状态进程 Linus 对 D 状态进程的看法 平均负载的概念 在 top 和 uptime 命令输出中的第一行有一个 load average 字段,由三个数字表示...当使用 fork() 等系统调用来创建一个新进程时,新进程的状态是 Ready 状态,在 linux 中,就绪态的进程也属于 TASK_RUNNING 状态,这个时候只是还没有拿到 CPU 的使用权。...D 状态的进程 TASK_UNINTERRUPTIBLE 在 top 命令中显示为 D 标记,也就是大名鼎鼎的 「D 状态」进程。...D 状态的进程算在平均负载里也还算合理。

    3.5K40

    【Linux】进程状态

    前言:   在Linux操作系统中,进程状态是一个重要而又复杂的话题。了解进程状态可以帮助我们更好地理解操作系统的运行机制。那么话不多说,开启我们今天的话题。...内核中的进程状态   Linux内核给出进程状态的几个表述: /* * The task state array is a strange "bitmap" of * reasons to sleep....✈️前后台进程   我们来解释一下为什么我们看到的进程状态是 S+ 或者 R+?在Linux中,存在着 前台进程 和 后台进程 之分。...其实,后台进程是不能用 Ctrl + C 直接杀死的,我们需要使用 kill -9 进程标识符来杀死进程: ✈️睡眠状态   我们来看一段之前写过的代码: #include int...进程分为前台进程和后台进程,前台进程可以使用 Ctrl+C 杀死,但是后台进程需要使用 信号杀死,运行程序时可以 使用特殊符号变为后台进程。

    1.4K10

    【Linux】进程状态

    ,再把存入磁盘的数据和代码换入内存中,并把进程放入CPU中运行 把代码和数据暂时性由操作系统交换到磁盘时,此时的进程称之为挂起状态 3.Linux进程状态 static const char * const...stopped)", /* 4 */ "t (tracing stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; Linux源码当中进程所对应的状态.../mytest 10 10 ^C//可以被终止 在终端1中ctrl c,终止mytest运行,S状态被终止 3.D休眠状态 ——不可中断休眠 想要往磁盘写入100MB的数据,由于磁盘写入数据很慢,所以进程把自己设置成阻塞状态...,若内存资源特别紧张,操作系统就想要把这个阻塞状态的进程干掉,可是此时磁盘依旧还在写入数据,这样做就会使磁盘写入数据失败,最终就会使100MB的数据丢失 若该进程的休眠状态为D状态,使操作系统无法干掉进程...linux当进程退出的时候,一般进程不会立即彻底退出,而是要维持一个状态叫做Z状态,也叫做僵尸状态 方便后续父进程读取子进程退出的退出结果 如何让我们看到僵尸状态呢?

    7.3K30

    【Linux】进程状态

    / "Z (zombie)", /* 32 */ }; 上面就是Linux中进程的七种状态。...S状态 S状态是可被中断的休眠状态,类似于浅睡眠 D状态 D状态是不可被中断的休眠状态,类似于深睡眠 如何暂停进程 18和19, 18进程继续,19是进程暂停。...进程继续: 可以看见进程状态虽然是S但是后面少了一个+号,这是由前台进程转换为了后台进程,这时我们再在前面用ctrl+c就结束不了进程了,只能用kill来杀死后台进程(后台不能用ctrl+c来杀死)...总结 通过对进程状态转换和 Linux 进程状态的分析,我们了解了操作系统如何通过不同的状态管理进程的执行。...进程的三种基本状态转换解释了进程从创建到结束的生命周期,而 Linux 系统中常见的 R、S、D 等状态则细化了进程在运行、等待以及阻塞中的具体表现。

    1.2K10

    【Linux】进程状态

    二.通过系统调用获取标识符 linux中可以通过 系统调用接口:getpid 获取该进程的PID,getppid可以获取父进程的PID  例: #include #include... int main() { while(1) { printf("我是一个进程 pid: %d ppid: %d\n",getpid...一般情况下,子进程和父进程也是共享数据的,但是一直共享数据也不现实,因为当我们要修改数据时,会把两个进程的数据都改了,这并不是我们想要的,但是重新开一块空间拷贝父进程的数据又有点浪费,所以linux就使用了一种叫写时拷贝的技术...linux中进程的状态 linux中的进程状态分为这几种 static const char * const task_state_array[] = { "R (running)", /* 0...stop)", /* 8 */ "X (dead)", /* 16 */ "Z (zombie)", /* 32 */ }; 这个S状态和D状态就算是阻塞状态了,S状态又叫浅度睡眠,D

    1.3K10

    【Linux】进程状态

    前言: 上文我们讲到了关于进程的基本概念【Linux】初见,进程概念-CSDN博客 本文我们来讲讲关于进程的状态 操作系统进程状态 操作系统中进程的概念大致分为三种...理解内核中的链表 【Linux】初见,进程概念-CSDN博客在上文我们讲到了linux中stack_struct的组织方式是:双链表。...不论是双链表、队列、单链表等等等等,都可以实现 Linux进程状态 上面讲到的操作系统进程状态,是笼统的大概念。...运行状态 R(running)与上述无异,既在运行队列中的进程即为运行状态 阻塞状态 S(sleeping)与 D(disk sleep) S:可中断休眠,浅睡眠。...可以被信号唤醒,当等待的事件发生(键盘输入)时也会被唤醒 D:不可中断休眠,深度睡眠。通常用于等待磁盘I/O操作完成。

    28310

    【Linux】进程状态

    接下来,我们想分析一下主流操作系统都存在的几种状态,然后具体分析LInux下的进程状态。准备好了吗?开船了!! 什么是进程状态 进程状态是指操作系统对进程的运行状态进行的描述。...S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠状态(interruptible sleep)) D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态...前台进程的表现:可以用Ctrl+C组合键来杀死这个进程,进程在显示器上输出结果时,我们对命令行进行任何指令操作都是无效(bash不会对指令做出反馈)。...深度睡眠状态(D状态) 这种状态我们平时很难见到,多出现在高并发,高IO的情况下 下面,我们简单了解一下这个状态,为了方便描述,我用第一人称视角来叙述。...就这样,操作系统把这个进程给杀死了。 一会儿,磁盘在写入的过程中出现了错误,于是,它就出来喊这个进程,但是怎么喊都喊不来。

    1.3K10

    Linux:进程状态

    描述进程PCB 进程状态 是一个整形变量,对应不同的整形,控制状态 对应调度队列 一个pcb既可以属于A数据结构也可以属于B数据结构 阻塞了进程链入设备的等待队列。...进程状态 R状态 每隔一秒钟查一次进程的状态 每隔一秒查一查状态 这里&后缀,放在后台运行 kill -9 26168,结束运行。 这里都是进程都是s因为运行时间太短。...S状态 阻塞状态 T状态 暂停状态 这里按顺序操作打上断点 b9给第九行打断点 然后运行 这时候状态 这就是追踪暂停 ctrl+z命令行暂停是T状态 D状态 可中断休眠...为了防止这个情况,就为了优化s状态,给了进程D状态,操作系统不能杀掉他,只有重启才能杀掉进程。...Z状态 (ZOMBIE)僵尸状态 因为所有进程都是一个进程的子进程,要么是bash的,要么是自己创建出来进程的子进程 获取死亡之前的进程信息,在释放之前,父进程要在子进程死亡之前获取执行的结果。

    35810

    Linux进程学习【进程状态】

    ,即把手机揣进兜里,然后 专心执行走路这个 进程 进程状态 进程 有各种运行状态,方便OS进行管理,在 Windows 中,进程 状态是这样的 而在我们 Linux 中,新建、就绪、运行都可以看作...运行 R 这一个状态,所以比较清晰 而我们今天要学习的正是 Linux 中的 进程 状态 进程是何种状态,取决于此进程的PCB在哪里排队 ️运行 R 首先来看看第一种状态 R 以我们以往的认知来说...还有一种方式终止进程:kill kill -9 PID 终止进程,当进程在后台运行时(状态不加 +),我们是无法通过 ctrl+c 终止的,但 kill 指令可以终止 ️休眠 D 还存在一种特殊睡眠状态...休眠 D,休眠 又被称为不可中断休眠,顾名思义,休眠 D 状态下的 进程 是无法终止的,kill 指令和 OS都无能为力,只能默默等待 进程阻塞 结束,拿到资源了,进程 才会停止 休眠 D 状态 终止...休眠 D 进程的一个方法就是切断电源,此时进程是结束了,但整个系统也结束了 倘若存在 休眠 D 进程长时间运行,那么此时就表示系统离宕机不远了 不可休眠状态比较少见,一般出现于IO阻塞 用途: 使操作系统无法杀死该

    2.7K30

    linux 批量杀死多个进程 kill

    下面说说用管道符联接起来的 几个命令: “ ps - ef”是Red Hat 里查看所有进程的命令。这时检索出的进程将作为下一条命令“grep LOCAL=NO”的输入。...“grep LOCAL=NO”的输出结果是,所有含有关键字“LOCAL=NO”的进程,这是Oracle数据库中远程连接进程的共同特点。...“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。 “cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。...“kill -9”会强行杀掉指定进程,这样就成功清除了oracle的所有远程连接进程。其它类似的任务,只需要修改“grep LOCAL=NO”中的关键字部分就可以了。...killall 进程名 如杀死java相关进程:killall java

    6.7K20
    领券