讲完这一章以后,我们Linux进阶部分讲完以后,我们的Linux操作部分就算讲完了,后面的讲解就主要是Linux上的应用软件的讲解,包括虚拟化,容器,云原生,数据库,中间件等。...Linux系统相关内容,主要从以下几个方面来讲解: Linux系统-开关机 Linux系统-单用户模式 Linux系统-救援模式 Linux系统-僵尸&孤儿进程(本章节) Linux系统-systemd...Linux系统-logrotate Linux系统-发行版介绍 Linux系统-发行版rocky Linux系统-发行版ubuntu Linux系统-初始化 我们在讲Linux进阶命令-top的时候说过...,在top里面命令,是可以看到僵尸进程的数量的;在讲Linux进阶命令-ps&kill的时候也讲过,部分进程是无法通过kill -9杀死的,僵尸进程就是其中之一;那么什么是僵尸进程,什么是孤儿进程的呢?...二、系统处理方式 当一个进程成为孤儿进程后,系统中的 init 进程(进程号为 1)会自动成为该孤儿进程的新父进程。 init 进程会负责监控和清理孤儿进程。
僵尸进程 上一篇文章进程的状态中最后我们提出了僵尸状态: 为了方便子进程退出后父进程或操作系统获取该进程的退出结果,Linux进程退出时,进程一般不会立即死亡,而是要维持一个Z状态即——僵尸状态。...孤儿进程 首先,我们给出孤儿进程的概念: 孤儿进程指的是在其父进程执行完成退出或被终止后仍继续运行的一类进程。 即如果父进程先退出,子进程继续还在运行,那么该子进程就被称为孤儿进程。...为什么操作系统要领养孤儿进程? 或者大家思考一下如果不领养孤儿进程,会发生什么? 那其实这个问题可以说我们前面已经讲过了。...如果孤儿进程不被领养,那它就没有父进程了嘛,那这样的话未来这个孤儿进程退出的时候谁来回收它,给它收尸呢?...那以上就是关于僵尸进程和孤儿进程的相关内容…
Linux下进程状态 任何进程在运行时都会有自己的状态 下面的状态在kernel源代码里定义: /* * The task state array is a strange "bitmap" of *...D状态 D状态:Linux系统比较特有的一种进程状态。在Linux系统层面称作浅度睡眠,S称为深度睡眠。...Linux操作系统负责的是进程管理,文件系统等,整个操作系统管理系统软硬件资源,当系统中整个资源内存不足时,Linux操作系统有权杀掉进程来释放空间。...孤儿进程 僵尸进程代码中是子进程先退出,父进程一直运行 在孤儿进程中,让父进程先退出,子进程一直运行 代码: #include #include...当父进程结束后,它的子进程的父进程变成1号进程,即操作系统 将父进程是1号进程的进程叫做孤儿进程。 孤儿进程被1号i进程领养,当然要有进程回收喽。
接前文:Linux系统 —— 进程系列 - 进程的概念,PCB与PID和fork-CSDN博客 https://blog.csdn.net/hedhjd/article/details/144299919...进程状态的概念 ⼀个进程可以有多个状态(在Linux内核⾥,进程有时候也叫做任务),打个比方:我们现在正在上课,这叫做上课中,上完课回到宿舍睡觉,这叫做休息中,休息完跑到操场是跑步,这叫做运动中...当中,操作系统理论里我们的阻塞状态叫做阻塞,而在Linux内核当中,我们的阻塞状态叫做S,我们看到一个进程卡住不动了,其实就是这个进程当前没有被调度,这个进程正在等待键盘有数据,所以这个状态叫做阻塞状态...这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行 暂停状态属于Linux的一种特有状态 t是有特殊用途的,主要是用来做debug的 2.5 X死亡状态(dead) "X (dead)...孤儿进程 如果一个父进程先退出,那么子进程就会被操作系统领养,子进程的父进程会变成操作系统,这个时候子进程就称之为孤儿进程,这个过程就叫做领养 为什么需要领养操作?
这两种情况就产生了孤儿进程和僵尸进程。下面会通过实际进程运行的示例来进行说明。首先先来明确一个知识点,在每个进程退出的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等。...孤儿进程 当子进程还没有结束的时候,父进程先结束了,那么此时的子进程就叫做孤儿进程(毕竟没有了爸爸),那么好在系统中也有福利院,此时系统中的1号进程init就相当于福利院收养了这个子进程,...然后我们看到了这个init,然后我们通过下面的代码来验证一下孤儿进程是不是会被init收养,也就是查看孤儿进程的PPID是否是1就好了,这里用桌面版的Ubuntu和服务器版的Ubuntu的运行结果不同,...如果用比较新(旧版的应该没有问题)的桌面版的Ubuntu会发现孤儿进程的PPID并不是1,那么为什么图形化的Ubuntu的孤儿进程没有被init收养可以看下这篇博客:传送门,那么这里我就用服务器版的Ubuntu
概念 在 Unix/Linux 系统中,正常情况下,子进程是通过父进程创建的,且两者的运行是相互独立的,父进程永远无法预测子进程到底什么时候结束。...孤儿进程: 一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为1)所收养,并由 init 进程对它们完成状态收集工作。...孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了 init 进程身上,init 进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。...这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init 进程就会出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。...枪毙了元凶进程之后,它产生的僵死进程就变成了孤儿进 程,这些孤儿进程会被 init 进程接管,init 进程会 wait() 这些孤儿进程,释放它们占用的系统进程表中的资源,这样,这些已经僵死的孤儿进程就能瞑目而去了
linux基础 僵尸进程 当进程exit()退出之后,他的父进程没有通过wait()系统调用回收他的进程描述符的信息,该进程会继续停留在系统的进程表中,占用内核资源,这样的进程就是僵尸进程。...printf("parent id is %dn",getpid()); sleep(60); printf("parend finally..."); } } 孤儿进程...当一个进程正在运行时,他的父进程忽然退出,此时该进程就是一个孤儿进程。...dn",getpid()); sleep(30);//睡眠30s,在子进程之前退出 printf("parend finally..."); } } 处置方式 孤儿进程会由
前言 上一篇博客中提到 【Linux】进程初步理解,这次继续来分享与进程有关的知识。 2. Linux的进程状态 Linux的进程状态就是struct task_struct内部的一个属性。...2.4 D状态 D状态是Linux系统比较特有的状态。...僵尸进程和孤儿进程 3.1 僵尸进程 Linux中一个进程的退出,它会将自己的退出信息保留在自己的PCB中。...3.2 孤儿进程 如果一个进程在运行的时候,它的父进程先退出了,那么这个进程就是孤儿进程。...为了保证孤儿进程正常被回收,孤儿进程会被操作系统领养。 可以直接kill掉孤儿进程: 在之前在Linux上写的代码,怎么出来没有关系过僵尸呢?或者内存泄漏?
孤儿进程,大家对其都很宽容,甚至可以说是放纵,只因系统会收留。...然而,在实际应用中,孤儿进程虽然不会给系统造成直接性的危害,但更多时候会对业务造成一些影响,如当子进程为一个基于tcp的socket服务时,会造成主进程再次启动时无法启动,端口被占用。...鉴于这些情况下,很多时候是不希望产生孤儿进程的,子进程应随父进程结束而结束。 本文就小说一把如何做一个有担当的"父亲",不要不负责任的"一走了之",随意丢弃自己的"孩子们"。...什么是孤儿进程 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。...孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成中止后的资源回收工作 通过下面的具体例子,具体看看 centralized_in_out 服务会启动8个子进程,父进程ID为5310
基本概念: 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。...孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 ...孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。...这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。...枪毙了元凶进程之后,它产生的僵死进程就变成了孤儿进 程,这些孤儿进程会被init进程接管,init进程会wait()这些孤儿进程,释放它们占用的系统进程表中的资源,这样,这些已经僵死的孤儿进程 就能瞑目而去了
前言 在Linux操作系统中,进程状态是操作系统资源调度和管理的重要组成部分。...本文将深入解析Linux中的进程状态,重点讨论僵尸进程与孤儿进程的形成、影响及处理方法。 一、进程状态概述 操作系统中的进程状态反映了每个进程当前的活动状态。...二、具体的Linux操作系统中的进程状态 以下是 Linux 操作系统下的常见状态: 状态符号 状态名称 描述 R 运行(Running) 进程正在 CPU 上运行或处于可运行状态,等待被调度。...结语 理解Linux中的进程状态,特别是僵尸进程与孤儿进程的处理,不仅有助于提升你对操作系统内部机制的理解,也为实际工作中的系统管理和性能优化提供了有力支持。...希望本文对Linux进程状态的详细分析,能够帮助你更好地理解Linux系统的运行原理,为后续的调优和故障排查提供实用的指导。
进程状态 2.1 进程状态码 在 linux 系统中,进程共有如下六种状态: D: 不可中断 Uninterruptible sleep,通常是正在进行 IO 操作; R: 正在运行中,或者在调度器队列中...什么是僵尸进程与孤儿进程 在 linux 系统中,进程都是由父进程创建的,当父进程执行 fork 系统调用完成子进程创建后,子进程和父进程就独立存在了,但两者又有着密切的关系,按照标准的流程,父进程要在子进程完成执行后...这就产生了两种进程:孤儿进程与僵尸进程。 3.1 孤儿进程 既然所有进程都是父进程创建的,那就会发生无限回溯的问题,所以必须要有一个最初的进程,来担任所有进程的祖先,这个进程就是 init 进程。...我们可以将各个 linux 发行版官方提供的镜像作为基础镜像,从而让我们的 docker 中可以模拟整个系统,或者在 docker 中安装 systemd 或者 sysvint 这类初始化系统的进程,但这无疑要消耗比较大的磁盘资源...启动的进程,然后所有其他进程都作为这个进程的子孙,孤儿进程就会自动被 Bash 进程过继。
孤儿/僵尸/守护进程 孤儿进程和僵尸进程以及守护进程都是对调用fork()函数后子进程的描述。 孤儿进程 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。...孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。 我们可以通过kill掉父进程来模仿一个孤儿进程。...在Linux进程的状态中,僵尸进程是非常特殊的一种,它已经放弃了几乎所有的内存空间,没有任何可执行代码,也不能被调度,仅仅在一个进程列表中保留了一个位置,记载该进程的退出状态等信息供其它进程收集。...如果把这个子进程(僵尸进程)的父进程杀掉,僵尸进程会变为孤儿进程,由init进程进行管理,init负责进行清理僵尸进程。...if (fd > 2) (void)close (fd); } return (0); } 补充: 关于dup2()函数 setsid的作用 linux
孤儿进程与僵尸进程 孤儿进程 一个父进程退出, 而他的一个或者多个子进程还在运行, 那么这些子进程将成为孤儿进程....孤儿进程将被init(进程号为1)所收养, 并有init进程对他们完成状态收集工作. 由于孤儿进程会被init收养, 所以孤儿进程不会对系统造成危害....要消灭系统中大量的僵尸进程, 只需要将其父进程杀死, 此时僵尸进程就会变为孤儿进程, 从而被init收养, 这样init就会释放掉所有的僵尸进程所占有的资源, 从而结束僵尸进程.
Linux中可能存在多个进程都要根据它的状态执行后续动作。一个CPU都会维护一个运行队列,当一个进程的PCB被链入到CPU的运行队列中时,我们就称这个进程的状态为运行状态。...三、Linux中具体的进程状态 static const char * const task_state_array[] = { "R (running)", /* 0 */ "S (sleeping)...而CPU的运行速度是非常非常快的,也就是说相对CPU而言,该进程大部分时间还是在等待外设的,在等待过程中CPU就将该进程链入到外设的等待队列中,所以该进程查到的状态大部分都是睡眠状态,这里的Linux操作系统具体实现的...四、孤儿进程 当父进程先于子进程退出,子进程会被操作系统(1号进程)领养,这个子进程就叫做孤儿进程。这个子进程变成孤儿进程的同时也变成了一个后台进程。
2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。...孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 ...孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。...这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。...枪毙了元凶进程之后,它产生的僵死进程就变成了孤儿进 程,这些孤儿进程会被init进程接管,init进程会wait()这些孤儿进程,释放它们占用的系统进程表中的资源,这样,这些已经僵死的孤儿进程 就能瞑目而去了
2.4 孤儿进程 我们先来创建一段代码 代码运行后,子进程一直运行,父进程运行5秒后退出 这个1号进程是谁呢?...答案是如果不被领养,那么这个子进程就进入僵尸进程,有可能会造成内存泄漏 父进程为什么不会变成孤儿进程或者僵尸进程呢?...答案是父进程也有自己的父进程,父进程的父进程就是bash 一旦进程变成孤儿进程,它就会被1号进程领养,变成后台进程,这时候Ctrl c就杀不掉它了,我们只能使用kill来杀死。 3....我们上上面代码中的父进程不再退出,父子进程一直运行,再运行代码 在linux系统中,每个用户都有一个UID,linux中识别用户就是用UID识别的。...✏️linux系统中,访问任何资源都是进程访问,进程就代表用户。
ref: https://zhuanlan.zhihu.com/p/665042157 系列 孤儿文件 通常产生于PG崩溃(OOM、或者pid被暴力kill -9 杀掉等) 孤儿文件,如何不处理,会造成磁盘空间的浪费...孤儿文件的产生模拟 =# BEGIN; BEGIN Time: 0.842 ms 22:08:47 db: postgres@postgres, pid: *=# select pg_backend_pid...t3233'); ^ Time: 1.012 ms 22:10:25 db: postgres@postgres, pid: 但是,在linux...网上常见的孤儿文件的查找方法 22:10:25 db: postgres@postgres, pid: =# select oid,datname from pg_database ; oid...pg_orphaned常用命令示例 1 列出早于1小时(默认1天)前的孤儿文件,并将“older”字段设置为 true。
孤儿进程 什么是孤儿进程?...孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。...孤儿进程有什么危害? 孤儿进程是没有父进程的进程,孤儿进程这个重任就落到了init进程身上,init进程就好像是一个民政局,专门负责处理孤儿进程的善后工作。...每当出现一个孤儿进程的时候,内核就把孤 儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。...这样,当一个孤儿进程凄凉地结束了其生命周期的时候,init进程就会代表党和政府出面处理它的一切善后工作。因此孤儿进程并不会有什么危害。 如何创建孤儿进程?
孤儿文档的形成有 2 种原因: ① 正常的 shard 之间 chunk 均衡迁移,会产生孤儿文档,这个孤儿文档会在迁移结束后自动异步删除。...开始怀疑孤儿文档。 db.collctionName.find().explain(true查询结果如下: 现在确定了问题所在,接下来开始清理孤儿文档。...collName) { cleanupOrphaned(dbName + "." + collName); }); 执行方法: /opt/software/mongodb/mongodb-linux-x86...这个孤儿文档在使用 readpreference 配置为 secondary pre 并且 readconcern 配置为 available 的时候会遇到读取到孤儿文档。...需要将 readconcern 配置为 local 避免读到孤儿文档。