首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解僵尸进程与孤儿进程

什么是僵尸进程与孤儿进程 在 linux 系统中,进程都是由父进程创建的,当父进程执行 fork 系统调用完成子进程创建后,子进程和父进程就独立存在了,但两者又有着密切的关系,按照标准的流程,父进程要在子进程完成执行后...但这个过程存在两个问题,那就是如果父进程先于子进程退出了怎么办?以及子进程退出以后,父进程始终没有调用 wait 或 waitpid 怎么办?这就产生了两种进程:孤儿进程与僵尸进程。...3.1 孤儿进程 既然所有进程都是父进程创建的,那就会发生无限回溯的问题,所以必须要有一个最初的进程,来担任所有进程的祖先,这个进程就是 init 进程。...4.3 杀死父进程 由于父进程死后,子进程以及僵死进程会成为孤儿进程,从而会被过继给 init 进程,init 进程就会负责清理僵死进程。...4.4 fork 两次 在建立子进程时,使用 2 次 fork,让所建立的子进程成为父进程的孙子进程,而实际中的子进程则随即推出,和第三条相同,由于孙子进程的父进程已经退出,所以在孙子进程会被自动过继给守护进程

1.9K20

进程伪装详解

就不能够正常运行,所以我们如果想到实现进程伪装,最好的选择就是伪装成系统必备的exe,当我们进行进程伪装之后,在系统中显示的就会是系统进程的信息,但这个程序还是能够执行它正常的功能,这样就达到了进程伪装...思路 我们判断一个进程是否被劫持,一般是看他的进程名以及path,即启动路径来判断,那么反推即可得到,我们可以通过修改进程模块中的进程路径以及进程名来实现进程伪装的作用 比如我们这里再看看explorer...的进程名和启动路径 那么这里我们改人如何获取进程的这些信息呢,这里可以使用到ntdll.dll里面的NtQueryInformationProcess来获取进程的PEB地址,这里稍微提一个概念,什么是...PEB,即Process Envirorment Block Structure,英文翻译过来就是进程环境信息块,这里包含了写进程的信息。...Reserved7[]; ULONG SessionId; } PEB, *PPEB; 这里就不深究每个属性的含义了,这里拿到PEB结构之后我们就能够对进程的一些属性进行修改就能够实现进程伪装的效果

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

    【Linux】详解进程终止&&进程等待

    二、进程终止 main函数的返回值我们叫做进程的退出码。一般0表示进程执行成功,非0表示进程执行失败。可以用非0的数字表示进程失败的原因。...2.2、进程退出的场景 进程提出的场景与三种: 1、进程代码执行完了,结果是正确的。 2、进程代码执行完了,结果不正确。 3、进程代码没有执行完,进程出异常了。...三、进程等待 3.1、进程等待的必要性 1、之前讲过,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内存泄漏。...fork之后父子进程谁先运行不确定,但fork之后一定是父进程后退出,因为父进程要回收子进程。...3.2.3、wstatus参数详解     *wstatus表示一个int整形变量,由三十二个比特位组成,其中前16个比特位我们不用,第17到第24个比特位用来表示进程退出时的退出码,第26到第32个比特位用来表示进程退出时收到的退出信号

    27010

    守护进程详解

    在一个多任务的电脑操作系统中,守护进程(英语:daemon,/ˈdiːmən/或/ˈdeɪmən/)是一种在后台执行的电脑程序。此类程序会被以进程的形式初始化。...守护进程程序的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护进程。 通常,守护进程没有任何存在的父进程(即PPID=1),且在UNIX系统进程层级中直接位于init之下。...守护进程程序通常通过如下方法使自己成为守护进程:对一个子进程运行fork,然后使其父进程立即终止,使得这个子进程能在init下运行。这种方法通常被称为“脱壳”。 系统通常在启动时一同引导守护进程。...守护进程为对网络请求,硬件活动等进行响应,或其他通过某些任务对其他应用程序的请求进行回应提供支持。...而作为Unix-like的Mac OS X有守护进程。(在Mac OS X中也有“服务”,但他们与Windows中类似的程序在概念上完全不相同。)

    87721

    Linux进程详解

    进程描述符的state字段用于保存进程的当前状态, 进程的状态有以下几种: TASK_RUNNING (运行) – 进程处于可执行状态, 在这个状态下的进程要么正在被CPU执行, 要么在等待执行(CPU...TASK_TRACED (被追踪) – 进程处于被追踪状态, 例如通过ptrace命令对进程进行调试. TASK_STOPPED (停止) – 进程处于停止状态, 进程不能被执行....进程的创建 在Linux系统中,进程的创建使用fork()系统调用,fork()调用会创建一个与父进程一样的子进程,唯一不同就是fork()的返回值,父进程返回的是子进程进程ID,而子进程返回的是0。...Linux创建子进程时使用了写时复制(Copy On Write),也就是创建子进程时使用的是父进程的内存空间,当子进程或者父进程修改数据时才会复制相应的内存页。..., 而创建进程是通过传入 CLONE_VM 标志来指定进程借用其他进程的虚拟内存空间结构

    4K10

    进程伪装详解

    就不能够正常运行,所以我们如果想到实现进程伪装,最好的选择就是伪装成系统必备的exe,当我们进行进程伪装之后,在系统中显示的就会是系统进程的信息,但这个程序还是能够执行它正常的功能,这样就达到了进程伪装...思路 我们判断一个进程是否被劫持,一般是看他的进程名以及path,即启动路径来判断,那么反推即可得到,我们可以通过修改进程模块中的进程路径以及进程名来实现进程伪装的作用 [image-20211021155051258....png] 比如我们这里再看看explorer的进程名和启动路径 [image-20211021155109215.png] 那么这里我们改人如何获取进程的这些信息呢,这里可以使用到ntdll.dll里面的...PEB,即Process Envirorment Block Structure,英文翻译过来就是进程环境信息块,这里包含了写进程的信息。...Reserved7[1]; ULONG SessionId; } PEB, *PPEB; 这里就不深究每个属性的含义了,这里拿到PEB结构之后我们就能够对进程的一些属性进行修改就能够实现进程伪装的效果

    2K40

    Linux:进程概念(二.查看进程、父进程与子进程进程状态详解

    2.父进程与子进程 2.1介绍 在操作系统中,当一个进程(称为父进程)创建另一个新进程(称为子进程)时,父子进程之间建立了一种特殊的关系。...这种关系具有以下特点和行为: 父子关系: 子进程的父进程是创建它的进程,即父进程。 每个进程都有唯一的父进程。...PID关系: 子进程的PID(进程标识符)是由父进程调用fork()或类似系统调用创建的。 子进程的PPID(父进程标识符)与创建它的父进程的PID相同。...几乎所有进程都是由其他进程创建的,因为通常情况下,操作系统启动时会先创建一个初始进程(通常是init进程或systemd),然后其他进程都是由这些初始进程创建的。...下面是对这两个返回值的解释: 给父进程返回子进程的 PID:在父进程中,fork 返回新创建子进程进程 ID(PID),这个 PID 是子进程的标识符,父进程通过这个 PID 可以识别并操作子进程

    1.4K10

    windows进程详解3

    是否为系统进程: 是 absr.exe进程文件: absr or absr.exe进程名称: Backdoor.Autoupder Virus描述: 这个进程是Backdoor.Autoupder后门病毒程序创建的...是否为系统进程: 否 acrobat.exe进程文件: acrobat or acrobat.exe进程名称: Adobe Acrobat描述: Acrobat Writer用于创建PDF文档。...是否为系统进程: 否 acrord32.exe进程文件: acrord32 or acrord32.exe进程名称: Acrobat Reader描述: Acrobat Reader是一个用于阅读PDF...是否为系统进程: 否 aim.exe进程文件: aim or aim.exe进程名称: AOL Instant Messenger描述: AOL Instant Messenger是一个在线聊天和即时通讯...是否为系统进程: 否 cmd.exe 进程文件: cmd or cmd.exe 进程名称: Windows Command Prompt 描述: Windows控制台程序。

    91220

    进程间通信详解

    进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。...它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之间)。 它可以看成是一种特殊的文件,对于它的读写也可以使用普通的read、write等函数。...,这样父子进程共享一个管道,一端连着主进程,一端连着子进程 sub_proc = Process(target=sub_process, args=(out_pipe, in_pipe))...in_pipe.send(i) # 如果不关闭主进程的输入端,则子进程会一直等待 in_pipe.close() # 等待子进程结束 sub_proc.join()...信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。 1、特征 信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。

    42320

    【Linux】Linux进程控制——进程创建、进程终止及进程等待详解

    进程创建 fork函数初识 在Linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。...将父进程部分数据结构内容拷贝至子进程 添加子进程到系统进程列表当中 fork返回,开始调度器调度 当一个进程调用 fork 之后,就有两个二进制代码相同的进程。...适用于读写少的场景:在数据被频繁读取而写操作相对较少的场景下,写时拷贝技术能够显著提升系统性能。 fork常规用法 一个父进程希望复制自己,使父子进程同时执行不同的代码段。...⭐进程等待 进程等待的必要性 在Linux进程提到过,子进程退出,父进程如果不管不顾,不读取子进程的退出信息,就可能造成“僵尸进程”的问题,进而造成内存泄漏。...如,子进程运行完成,结果对还是不对, 或者是否正常退出。 父进程通过进程等待的方式,回收子进程资源,获取子进程退出信息。

    11610

    GPU,具有Tensorflow的多进程

    需要与要启动的进程一样的内核(有时内核可以处理多个“线程”,因此这是最后关注的数字)。 将使用AWS的实例p3.8xlarge,提供32个vCores和4个V100显卡。...这个包允许启动进程并创建管道以与它们通信。以下是架构的拓扑: ? 多处理图 有32个工作进程和1个主进程。...工作进程只是在玩游戏来收集数据并将其发送到主进程,主进程将训练这些数据并将新网络保存在文件中。然后,工作人员收到加载新网络,加载并再次播放N个游戏的消息。...因此,需要从主进程启动32个进程,并在主进程和每个进程(即32个管道)之间创建一个管道。还需要在主进程内创建线程以异步侦听管道。...对于GPU分配,有32个进程,4个GPU,每个16GB内存。增加每个进程的内存可以提高运行模型的进程速度。

    2.2K20

    Zabbix通过进程名监控进程状态配置详解

    Zabbix通过进程名监控进程状态配置详解 有时候我们只能通过进程名监控一个进程是否停掉了,因为有的进程并没有对外提供端口号,以下记录了下详细步骤,通过这个示例会学到很多zabbix核心配置相关的东西。...可以到这里找到: http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/ 在这里我们需要的是proc.num这个key,以下是对此key的详解...: 可以看到此监控项的返回值是进程数量,其中cmdline参数可以是进程名字包含的关键字,在这里我的进程的关键字是logstash,因此按如下方式创建监控logstash进程的监控项,表示机器所有用户所有状态的...3.配置动作发送短信和邮件报警: 以下是短信配置方式,邮件配置类似,其中应用集是自己创建的,主要用来分类,具体的自行研究: 参考文章: zabbix item key详解 zabbix...agent 类型所有key zabbix触发器表达式详解 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140545.html原文链接:https://javaforall.cn

    2.7K30

    【Linux】进程详解进程的创建&终止&等待&替换

    前言 之前在这两篇文章中 【Linux】进程管理:状态与优先级调度的深度分析 【Linux】进程详解:命令行参数、环境变量及地址空间-CSDN博客 我们已经了解过了进程的基本概念,这一章我们要进一步的学习进程...()函数外面看到的现象就是一个函数出现了两个返回值 .为什么子进程要返回0,而父进程要返回子进程的PID❓ 一个父进程可以创建很多的子进程,而每一个子进程都只能有一个父进程 而父进程创建子进程是为了让子进程完成任务的...,所以父进程需要标志每一个子进程,所以父进程通过返回子进程的PID来标识每一个子进程 而子进程只有唯一的父进程,所以不需要标识父进程,因此返回一个 0 就可以了 2.3 写时拷贝 通常,父子代码共享,...多进程运行,需要独享各种资源,多进程运行期间互不干扰,不能让子进程的修改影响到父进程 为什么不在创建子进程的时候就直接在子进程中拷贝一份父进程中的代码和数据❓ 子进程不一定会修改父进程中的code或者...进程等待 4.1 进程等待的必要性 「进程等待」的工作就是让父进程回收子进程的资源,获取子进程的退出信息。

    23210

    进程优先级详解

    进程优先级的相关信息,存放在进程描述符 task_struct 中: struct task_struct { ......,若为实时进程,则返回1,否则返回0 prio = MAX_RT_PRIO-1 - p->rt_priority;        // 进程为实时进程,prio 值为实时优先级值做相关运算得到...值      .... } 从上面代码中我们知道,当进程为实时进程时, prio 的值由实时优先级值(rt_priority)计算得来;当进程为非实时进程时,prio 的值由静态优先级值(static_prio...即: prio = MAX_RT_PRIO - 1 - rt_priority // 进程为实时进程 prio = static_prio          // 进程为非实时进程 简单计算上面的两个式子...,若为实时进程,则返回1,否则返回0 prio = MAX_RT_PRIO-1 - p->rt_priority;        // 进程为实时进程,prio 值为实时优先级值做相关运算得到

    30410

    【Linux】进程间通信详解

    通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。...进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。...在学习之前,我们要知道,父进程fork后,子进程继承父进程的相关数据结构,不会继承父进程曾经打开的文件对象。...实现子进程写入,父进程读取  代码示例 子进程向父进程写入“hello  i am your child !”...*shm_unused2; /* ditto - used by DIPC */ void *shm_unused3; /* unused */ }; 那么此时就出现了一个问题,既然系统中存在那么共享内存

    43620

    MySQL 实例详解

    一、基本概念 1、MySQL实例 就是在一台机器上面开启多个不同 的端口,运行多个MySQL服务进程。这些MySQL实例公用一套安装程序,使用不同的(也可以是相同的)配置文件,启动程序,数据文件。...已经为双主复制的mysql数据库服务器架构,想部分重要业务的数据一份异地机房的热备份,而mysql复制暂不支持主的复制模式,且不给用户提供服 务,为有效控制成本,会考虑异地机房部署一台性能超好的物理服务器...,甚至外加磁盘柜的方式,为此也会部署实例; 5....2、资源互相争抢问题,比如 内存 ,cpu 需要开启 numa,并把 mysql 绑定到固定的核心上,网卡的中断请求,资源争用,最重要的是磁盘 IO MySQL实例配置方法 1、单一配置文件 2、配置文件...与一些安全措施 8、关闭MySQL 9,、提供简易管理脚本 10、为mysql的root用户创建密码 11、附,配置文件安装mysql实例,这里增加mysql 的3309端口 12、总结 1、同步时间

    2.1K140

    Linux:进程概念(三.详解进程进程状态、优先级、进程切换与调度)

    所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态 2.3僵尸进程危害 进程的退出状态对于父进程来说很重要,因为它告诉父进程进程执行任务的结果。...3.孤儿进程 孤儿进程是指父进程先于子进程结束而结束,导致子进程成为孤儿进程。在Linux系统中,孤儿进程会被init进程进程ID为1的进程)接管。...当父进程先于子进程结束时,子进程的父进程ID会被修改为1,即init进程进程ID,这样子进程就成为了孤儿进程。 孤儿进程的父进程ID会被修改为1,即init进程进程ID。...孤儿进程会被init进程接管,init进程会负责回收孤儿进程的资源。 孤儿进程的父进程结束后,其父进程ID会被修改为1,但其依然可以正常运行,直到自己结束或被init进程接管。...为了避免产生孤儿进程,父进程在创建子进程后应该等待子进程结束,并及时处理子进程的终止状态。这样可以确保子进程在父进程结束时能够正常退出,而不会成为孤儿进程

    84910
    领券