Linux Zombie Process

Wait函数

pid_t wait(int *status);//函数原型

头文件<sys/types.h>、<sys/wait.h>

进程一旦调用了wait,就立即阻塞自己,由wait自动分析当前进程的某个子进程是否已经退出,如果它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到,wait就会一直阻塞在这里,直到有一个出现为止。

SIGCHLD

SIGCHLD,Linux的一个信号。
在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程。系统默认忽略此信号。如果父进程希望被告知其子进程的这种状态,则应捕捉此信号。信号的捕捉函数中通常调用wait函数以取得进程ID和其终止状态。

父进程死掉之后,其所有子进程过继给 init 进程,init 进程成为该僵尸进程的新进程,init 进程会周期性地去调用 wait 系统调用来清除它的僵尸孩子。

不能使用 kill 后接 SIGKILL 信号这样的命令像杀死普通进程一样杀死僵尸进程,因为僵尸进程是已经死掉的进程,它不能再接收任何信号。事实上,如果系统中僵尸进程并不多的话,我们也无需去消除它们,少数的僵尸进程并不会对系统的性能有什么影响。

时间: 2024-08-01 13:18:24

Linux Zombie Process的相关文章

Linux Zombie进程状态介绍 以及 如何清理

Linux 进程有哪些状态 通过ps的帮助手册,能看到进程有几种状态 man ps D uninterruptible sleep (usually IO) R running or runnable (on run queue) S interruptible sleep (waiting for an event to complete) T stopped, either by a job control signal or because it is being traced W pag

Linux zombie进程详细解析

Linux僵尸进程详细解析 在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用 waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill-9也不能杀死僵尸进 程.补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进 程.    僵尸进程是指的父进程已经退出

Linux下用来获取各种系统信息的C++类

下面是头文件内容,代码是mooon的一部分,对应的CPP文件请直接浏览:http://code.google.com/p/mooon/source/browse/trunk/common_library/src/sys/info.cpp #include <vector> #include "sys/config.h" SYS_NAMESPACE_BEGIN /*** * 用来获取系统.内核和进程的各类实时信息,如CPU和内存数据 */ class CInfo { publ

Linux系统中的ps进程查看命令使用实例集锦

  linux 中ps命令是Process Status的缩写.ps命令可以列出系统中当前运行的进程,所列出的进程是执行ps命令这个时刻正在运行的进程. 如果要动态显示进程信息,需要使用top命令. 通过ps命令,可以确定哪些进程正在运行和运行状态.进程是否结束.进程是否僵死,哪些进程占用过多资源等. 要杀死进程,使用kill命令,例:kill 12345 (12345为进程的pid) linux进程有5种状态 1.运行(正在运行或在运行队列中等待) 2.中断(休眠中,受阻,或等待某个条件的形成

Linux下ps命令详解

  Linux下ps命令详解 Linux上进程有5种状态: 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) ps工具标识进程的5种状态码: D 不可中断 uninterr

Linux下如何查看高CPU占用率线程 专题

Java 系统性能分析 命令 1. cpu分析 top , pidstat(sysstat) pid -p PID -t 1 10 vmstat 1 CPU上下文切换.运行队列.利用率 ps Hh -eo tid pcpu 查看具体线程的CPU消耗 sar 来查看一定世界范围内以及历史的cpu消耗情况信息 查看java线程信息 jstack pid | grep 'nid=0x9999' 2. cs sy消耗比较高 上下文切换性能偏高, jstack -l pid, 查看on object mo

Linux下PS命令详解 (转)

要对系统中进程进行监测控制,查看状态,内存,CPU的使用情况,使用命令:/bin/ps (1)ps :是显示瞬间进程的状态,并不动态连续: (2)top:如果想对进程运行时间监控,应该用 top 命令: (3)kill 用于杀死进程或者给进程发送信号: (4)查看文章最后的man手册,可以查看ps的每项输出的含义,to find: STANDARD FORMAT SPECIFIERS ===================================ps 的参数说明=============

深入 Linux 的进程优先级

深入 Linux 的进程优先级 为什么要有进程优先级?这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情.因为有的进程相对重要,而有的进程则没那么重要. 本文作者:邹立巍 Linux系统技术专家.目前在腾讯SNG社交网络运营部 计算资源平台组,负责内部私有云平台的建设和架构规划设计. 曾任新浪动态应用平台系统架构师,负责微博.新浪博客等重点业务的内部私有云平台架构设计和运维管理工作. 进程优先级起作用的方式从发明以来基本没有什么变化,无

Linux 系统监控、诊断工具之 IO wait

Linux 系统监控.诊断工具之 IO wait 1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了. 同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件.硬件层面分别寻找解决方案. 2.排查: 从 top 中可以看到 load average 偏高,%wa 很