[转帖]linux defunct 进程,Defunct进程(死进程)

linux,defunct,进程 · 浏览次数 : 0

小编点评

**文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25230 人正在系统学习中** **文章内容** * Defunct进程的产生 在AIX操作系统实施的进程结构中,每一个进程都有一个父进程。当一个进程结束时会通知它的父进程,从而该进程的父进程会收集该进程的状态信息。若父进程在一定的时间内无法收集到状态信息,则系统中就会残留一个defunct进程。 * 问题确定 某一个进程在结束时由它的父进程负责收回结束的子进程。未收回子进程的原因之一是shell管道。系统中的许多命令都不会产生子进程,这些进程也无法处理那些结束的子进程。这种情况在一个shell管道中有一个或多个短时进程及一个和多个长时间进程时更为明显。 * 如果需要对问题做进一步确认,如何做? 如果确认一个进程是defunct进程,并且该进程应该被它的父进程收回,则可能需要提供下面的信息给应用软件供应商用以分析问题产生的可能原因: *下面命令的输出: # ps -ef (2)下面命令的输出: # who -a (3)/etc/inittab 文件 (4)下面命令的输出: SLOT=`expr / 256` (echo u $SLOT ; echo trace -k $SLOT) | crash > 其中,是defunct进程的父进程号, 是输出文件的文件名。 现在仅仅明白了僵尸进程产生原因,除了重启机器好像没有什么更好的办法 **文章结论** * 1.在AIX 5.1上面发现仍然存在defunct进程 2.在ps -ef中看不到defunct进程,现在只会在who -d命令中看到,找不到defunct进程的父进程号

正文

Defunct进程(死进程)

IBM网站有关Defunct进程(死进程)的问题确定

内容提要:

本文介绍了为什么会产生defunct进程,如何确定引起defunct进程的原因,以及当需要进一步确定问题时应提供何种信息给软件供应商。

说明:

1.Defunct进程的产生

在AIX操作系统实施的进程结构中,每一个进程都有一个父进程。当一个进程结束时会通知它的父进程,从而该进程的父进程会收集该进程的状态信息。若父进程在一定的时间内无法收集到状态信息,则系统中就会残留一个defunct进程。

因为defunct进程是已经停止的,所以使用杀死进程的方法来杀defunct进程是无效的。defunct进程不使用CPU或硬盘等系统资源,而只使用极少量的内存用于存储退出状态和资源使用信息。

#who -d可以看到好多

# who -d

. . Aug 10 21:33 . 5480 id=load64b term=0 exit=0

. . Aug 10 21:33 . 15494 id=rc term=0 exit=0

. . Aug 10 21:33 . 15496 id=fbcheck term=0 exit=0

. . Aug 10 21:33 . 16258 id=harc term=0 exit=0

. . Aug 10 21:33 . 16260 id=rcnsr term=0 exit=0

. . Aug 10 21:33 . 17584 id=piobe term=0 exit=0

. . Aug 10 21:33 . 18588 id=logsymp term=0 exit=0

. . Aug 10 21:33 . 17076 id=pmd term=0 exit=0

. . Aug 10 21:33 . 17078 id=httpdli term=0 exit=0

. . Aug 10 21:33 . 18326 id=diagd term=0 exit=0

. . Aug 10 21:33 . 20384 id=rcpkcs1 term=0 exit=0

. . Aug 10 21:34 . 20386 id=imnss term=0 exit=0

. . Aug 10 21:34 . 20132 id=imqss term=0 exit=0

. . Aug 10 21:33 . 21430 id=l2 term=0 exit=0

. . Aug 10 21:34 . 19352 id=i4ls term=0 exit=0

. . Aug 10 21:34 . 19354 id=hacmp60 term=0 exit=0

. . Aug 10 21:35 . 25304 id=rctcpip term=0 exit=0

. . Aug 10 21:35 . 24900 id=rcnfs term=0 exit=0

. . Aug 10 21:35 . 27356 id=qdaemon term=0 exit=0

. . Aug 10 21:35 . 27358 id=writesr term=0 exit=0

. . Aug 10 21:35 . 27360 id=clinit term=0 exit=0

. . Aug 10 21:35 . 27362 id=pst_cli term=0 exit=0

. pts/2 Sep 02 18:24 5:02 33348 id=pts/2 term=1 exit=0

. pts/5 Sep 01 10:31 2:24 40934 id=pts/5 term=1 exit=0

. pts/6 Sep 02 15:43 6:23 46092 id=pts/6 term=0 exit=0

. pts/7 Sep 02 15:42 6:25 51382 id=pts/7 term=1 exit=0

. pts/8 Sep 01 17:58 old 38490 id=pts/8 term=0 exit=0

. pts/9 Sep 01 17:06 old 24254 id=pts/9 term=1 exit=0

. pts/10 Sep 01 15:39 old 38232 id=pts/10 term=0 exit=0

#man who

....

-d Displays all processes that have expired without being regenerated by init.

The exit field appears for dead processes and contains the termination and exit

determining why a process ended by looking at the error number returned by the

application.)

...

IBM网站有关Defunct进程(死进程)的问题确定

Document #: 2311123000005

Body:

[标题]有关Defunct进程(死进程)的问题确定

内容提要:

本文介绍了为什么会产生defunct进程,如何确定引起defunct进程的原因,以及当需要进一步确定问题时应提供何种信息给软件供应商。

说明:

1.Defunct进程的产生

在AIX操作系统实施的进程结构中,每一个进程都有一个父进程。当一个进程结束时会通知它的父进程,从而该进程的父进程会收集该进程的状态信息。若父进程在一定的时间内无法收集到状态信息,则系统中就会残留一个defunct进程。

因为defunct进程是已经停止的,所以使用杀死进程的方法来杀defunct进程是无效的。defunct进程不使用CPU或硬盘等系统资源,而只使用极少量的内存用于存储退出状态和资源使用信息。

2.问题确定

某一个进程在结束时由它的父进程负责删除它。要找到某一个进程的父进程,执行ps -ef命令,输出中的PPID列给出了一个进程的父进程的进程号。

(1)如果PPID为1应该如何做?

如果一个defunct进程的PPID为1,则该defunct进程的父进程为init进程。init进程是系统中所有进程的起源。通常情况下,init进程通过将defunct进程的PPID设为1来收回该进程。

如果一个defunct进程的父进程号为1,则需要确认该defunct进程是否已结束了若干分钟。(方法是等几分钟后再查看该defunct进程是否还存在。)一个系统中,特别是任务繁忙的系统中,父进程为init的defunct进程存在1~2分钟是正常的。defunct进程经常由复杂的shell脚本程序产生,这种情况通常是正常的,并不能说明有问题存在。

当init进程没有处理完/etc/inittab文件而在等其中的某一项命令结束(通常是一个/etc/rc脚本)时,可能会发生问题。在这时候,init进程会忽略掉其它所有结束的子进程,而只等这个特定的子进程结束。由一个挂起的/etc/inittab文件中的任务引起的问题的征兆是:父进程为init的defunct进程无限制的增长。在AIX4.3及以后的版本中,init进程的功能被增强,用以有效地处理defunct进程。

如果/etc/inittab文件中含有类似下一行的项,则删除它:

install_assist:2:wait:/usr/lib/lpd/pio/etc/pioinit > /dev/null 2>&1

该进程会引起defunct进程。该项应在初始化安装结束后被自动删除。

(2)如果PPID不为1应该如何做?

如果父进程号不为1,则相应的父进程应负责收回结束的子进程。未收回子进程的原因之一是shell管道。系统中的许多命令都不会产生子进程,这些进程也无法处理那些结束的子进程。这种情况在一个shell管道中有一个或多个短时进程及一个和多个长时间进程时更为明显。一个defunct进程会在它的父进程运行期间一直存在。

任何一个程序在产生子进程时都应负责在子进程结束时收回它们。如果程序在编写中没有考虑到处理它们产生的子进程,则该程序存在问题。

3.如果需要对问题做进一步确认,如何做?

如果确认一个进程是defunct进程,并且该进程应该被它的父进程收回,则可能需要提供下面的信息给应用软件供应商用以分析问题产生的可能原因:

(1)下面命令的输出:

# ps -ef

(2)下面命令的输出:

# who -a

(3)/etc/inittab 文件

(4)下面命令的输出:

SLOT=`expr / 256`

(echo u $SLOT ; echo trace -k $SLOT) | crash >

其中,是defunct进程的父进程号, 是输出文件的文件名。

现在仅仅明白了僵尸进程产生原因,除了重启机器好像没有什么更好的办法

疑问:1.在AIX 5.1上面发现仍然存在defunct进程

2.在ps -ef中看不到defunct进程,现在只会在who -d命令中看到,找不到defunct进程的父进程号

这些问题慢慢解决吧

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux25230 人正在系统学习中

与[转帖]linux defunct 进程,Defunct进程(死进程)相似的内容:

[转帖]linux defunct 进程,Defunct进程(死进程)

Defunct进程(死进程) IBM网站有关Defunct进程(死进程)的问题确定 内容提要: 本文介绍了为什么会产生defunct进程,如何确定引起defunct进程的原因,以及当需要进一步确定问题时应提供何种信息给软件供应商。 说明: 1.Defunct进程的产生 在AIX操作系统实施的进程结构

[转帖]Linux 磁盘I/O 调度算法 说明

2022-08-23 13:031361转载Linux 1 Linux 4.0 IO协议栈框架图 I/O 调度算法在各个进程竞争磁盘I/O的时候担当了裁判的角色。他要求请求的次序和时机做最优化的处理,以求得尽可能最好的整体I/O性能。 Linux 4.0 IO协议栈框架图 I/O调度程序的总结 当向

[转帖]Linux中常见IO调度器

https://www.jianshu.com/p/3c16e39a005a 单队列调度算法多队列调度算法 deadline mqdeadlines cfq bfq noop none kyber 对于磁盘I/O,Linux提供了cfq, deadline和noop三种调度策略 cfq: 这个名字是

[转帖]Linux 平台使用shc 工具加密shell 脚本

2021-08-03 20:4510030原创Linux 本文链接:https://www.cndba.cn/dave/article/4642 1 shc 工具说明 shell 脚本是常用脚本,运维中经常使用,但有时候在shell 脚本中会包含一些敏感的信息,比如密码或者特殊的参数,此时我们就可以

[转帖]Linux系统多网卡环境下的路由配置

https://www.cnblogs.com/connect/p/linux-static-route.html Linux下路由配置命令 1. 添加主机路由 route add -host 192.168.1.11 dev eth0 route add -host 192.168.1.12 gw

[转帖]linux命令行下如何格式化json并进行各种json处理操作

https://blog.csdn.net/penriver/article/details/122016563 有时需要在linux 的命令行下,需要查看json的内容或针对json进行各种操作,本文针对此进行梳理、总结。 在Linux系统下基于python json.tool可以格式化json,

[转帖]Linux grep、egrep使用命令详解

https://segmentfault.com/a/1190000040654123?utm_source=sf-similar-article grep egrep区别 grep 默认不支持扩展 但可以通过-E 选择来支持扩展正则egrep 支持扩展正则 关于正则与扩展正则的区别可以看我另一篇s

[转帖]Linux kill & Java shutdownhook

https://www.jianshu.com/p/8001a66d37c9 shutdown-hook 建议加上shutdown的钩子 如果程序出现了内存溢出crash 则现在代码是没有任何保护措施的 或者说运维不小心关闭了服务器等 或者运维不小心kill了游戏服务器进程等 无法避免kill -9

[转帖]linux 调优篇 :硬件调优(BIOS配置)* 壹

https://blog.csdn.net/tony_vip?type=blog 一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效提升虚拟化平台性能

[转帖]Linux 运维工具

Linux系统是目前仅次于Windows系统的一个开源系统,并且拥有比Windows系统更广泛的应用范围,从航天到军事、从科研到金融、从手机到电脑,你能够在任何一个需要操作系统的地方看到Linux的身影。 实际上Linux并不是一个真正的系统,它仅仅是一个有着上万行代码的系统内核,最初版本也只能够在