linux 僵死日志,linux 僵死进程及处理
===========================================
defunct 进程只是在process
table里还有一个记录,其他的资源没有占用,除非你的系统的process个数的限制已经快超过了,zombie进程不会有更多的坏处。
可 能唯一的方法就是reboot系统可以消除zombie进程。
===========================================
任何程序都有僵尸状态,它占用一点内存资源(也就是进程表里还有一个记录),仅仅是表象而已不必害怕。如果程序有问题有机会遇
见,解决大批量僵尸简单有效的办法是重起。kill是无任何效果的
fork与zombie/defunct"
在Unix
下的一些进程的运作方式。当一个进程死亡时,它并不是完全的消失了。进程终止,它不再运行,但是还有一些残留的小东西等待父进程收回。这些残留的东西包括
子进程的返回值和其他的一些东西。当父进程 fork() 一个子进程后,它必须用 wait() 或者 waitpid()
等待子进程退出。正是这个 wait() 动作来让子进程的残留物消失。
自然的,在上述规则之外有个例外:父进程可以忽略 SIGCLD 软中断而不必要
wait()。可以这样做到(在支持它的系统上,比如Linux):
main()
{
signal(SIGCLD, SIG_IGN);
.
.
fork();
fork();
fork();
}
现在,子进程死亡 时父进程没有 wait(),通常用 ps 可以看到它被显示为“”。它将永远保持这样 直到 父进程
wait(),或者按以下方法处理。
这 里是你必须知道的另一个规则:当父进程在它wait()子进程之前死亡了(假定它没有忽略 SIGCLD),子进程将把 init(pid
1)进程作为它的父进程。如果子进程工作得很好并能够控制,这并不是问题。但如果子进程已经是
defunct,我们就有了一点小麻烦。看,原先的父进程不可能再 wait(),因为它已经消亡了。这样,init 怎么知道 wait()
这些 zombie 进程。
答案:不可预料的。在一些系统上,init周期性的破坏掉它所有的defunct进程。在另外一些系统中,它干
脆拒绝成为任何defunct进程的父进程,而是马上毁灭它们。如果你使用上述系统的一种,可以写一个简单的循环,用属于init的defunct进程填
满进程表。这大概不会令你的系统管理员很高兴吧?
你的任务:确定你的父进程不要忽略 SIGCLD,也不要 wait() 它 fork() 的所有进程。不过,你也未必 要
总是这样做(比如,你要起一个 daemon 或是别的什么东西),但是你必须小心编程,如果你是一个 fork()
的新手。另外,也不要在心理上有任何束缚。
总结:
子进程成为 defunct 直到父进程 wait(),除非父进程忽略了 SIGCLD 。
更进一步,父进程没有 wait() 就消亡(仍假设父进程没有忽略 SIGCLD )的子进程(活动的或者 defunct)成为 init
的子进程,init 用重手法处理它们。
linux 僵死日志,linux 僵死进程及处理相关推荐
- linux 高性能日志,linux日志系统
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 常见的日志 常见的日志一般存放在 /var/log 中,我们可以根据服务对象粗略的将日志分为两类系统日志 应用日志日志名 ...
- linux dprintk 日志,linux命令备忘
2012-09-06 07:16 1234人阅读 评论(0) links -dump your.html html2txt lynx --dump your.html html2txt ldconfi ...
- linux 僵死日志,关于僵死进程
首先介绍一下什么是僵死进程 int main() { int n = 0; char *s = NULL; pid_t pid = fork(); assert(pid != -1); if(pid ...
- linux postfix 日志,linux – 如何计算Postfix的mailq的消息?
推荐文章 Wish me luck, I'm diving into JavaScript! As much as I want to start using JavaScript right awa ...
- linux mount 日志,Linux mount (第一部分)
本篇将介绍一些比较实用的mount用法,包括挂载内核中的虚拟文件系统.loop device和bind mount. 下面的所有例子都在ubuntu-server-x86_64 16.04下执行通过 ...
- linux蓝牙日志,linux蓝牙
linux蓝牙 (2008-12-30 17:20:07) 标签: 杂谈 为了将手机上的图片传送到笔记本电脑上,发现手机和笔记本电脑同时支持蓝牙. linux下蓝牙工具为bluez,包括bluez-u ...
- linux蓝牙日志,Linux下使用蓝牙(ZT)
使用 爱立信T68i.索爱T628 与 Billionton USB Bluetooth Adapter 在Debian Kernel-2.6.0内核下测试通过. (本人购买的台产Billionton ...
- linux 擦 日志,linux日志清除脚本(擦屁股必备)
使用方法: $0 options options有: -h 帮助 -i [ip] 查找在所有的日志文件特别IP_ADDRESS和搜索排名前20位的IP在日志文件中记录. -d [ip] ...
- natepad怎么连linux看日志,linux添加用户操作日志
1.把以下内容放至/etc/profile结尾(部分系统如CentOS 5.5可能需要放至/etc/bashrc结尾)HISTFILESIZE=2000 HISTSIZE=2000 export HI ...
最新文章
- canvas刮奖效果
- Android TextView文本处理库推荐
- 高效计算基础与线性分类器
- Java浅克隆与深克隆区别详解与实现,以及String类型属性克隆为什么不受影响?克隆clone()方法中为什么是super.clone()
- 40岁后学编程(1)
- 使用pushMeBaby后台测试远程推送
- 获取族_批量添加族参数(上)
- linux文件内容添加序号,nl命令将指定的各个文件添加行号编号序号标注后写到标准输出...
- android toast的使用
- ASP应用之模板采用
- Android内存泄漏分析及调试
- CSS自定义动画@keyframes的使用
- Everest 0.6不能保存3D桌面特效的解决方案
- linux系统中find怎么用,Linux系统中查找命令find的使用方法(一)
- 助您写出优雅的Java代码七点建议
- NOIP2013 试做总结
- Bongiovi DPS for Mac - 优秀的声音增强软件
- 需要两张图片合成一个PDF文件(两页)
- Windows cmd下载文件
- linux释放分区命令,Linux fdisk命令操作磁盘(添加、删除、转换分区等)
热门文章
- 苹果服务器维护2月25日,梦幻西游2口袋版2月25日定期维护公告
- 图嵌入前篇之词嵌入模型 Wrod2Vec
- Hbase---Compaction
- 使用textview显示html,使用 TextView 显示html页面
- 基于AS608与STC89C52的指纹密码锁
- Unity 分享 功能 用Unity Native Share Plugin 实现链接、图片、视频等文件的分享+ 安卓 Ios 都可以,代码图文详解
- 实践:动手搭建神经机器翻译模型
- catkin build 和 catkin_make
- [数字人]TTS(1)
- RAD Studio 10.4.1新的基于Chromium的Microsoft Edge浏览器的TEdgeBrowser控件用法