Linux cron输出导致僵尸进程案例及解决
来源:互联网 发布:linux 目录空间不足 编辑:程序博客网 时间:2024/05/18 07:51
本文转自:http://blog.sina.com.cn/s/blog_6226824c01014ee8.html
登录到主机发现服务器上有近40个名称为[sh] <defunct>的进程
Ps –ef带进程号查 发现是僵尸进程是
发送邮件的/usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t进程
杀掉这些僵尸进程
kill -9 `ps -ef|grep def|awk '{print $3}'`
后进行分析如下:
首先查到/var/mail下的root文件将近57G,这是异常的。
后联想到cron,发现root下有cron任务
[root@server mail]# ll -h
total 57G
-rw-------
[root@server mail]# crontab -l
50 23 * * * /sbin/ hwclock --directisa --hctosys
0 5 * * * /starnet/dbbak/dbbak.sh
0 6 8,15,22,30 * * /dmbstart_all
40 11 * * * /dmbstart_all
[root@server mail]#
照成这些现象的原因是crontab中的程序执行,导致输出大量信息到标准设备上,输出的信息又触发了系统的sendmail,把信息当作邮件发给root用户。上述截图里可以发现root这个用户的mail文件已有57G之大,说明输出的信息量大。
crontab计划内容中定义命令如果有输出信息的话,会调用sendmail把输出信息发到/var/mail文件中,所以如果有大量输出信息,将会造成僵尸进程(defunct);这时候应该在定义的命令后边加上">/dev/null 2>&1"
解决办法:
即将crontab里面的每行命令后面加上> /dev/null 2>&1
并及时清理原root的mail文件。
==============================================================================================
系统默认要发一些邮件(比如cron发的邮件)的时候,首先会把邮件拷贝到这个目录里,然后等待MTA(mail transfer agent) 来处理,MTA做的事情通常是把这个目录中的邮件弄到/var/spool/mqueue里,然后再发送到真正的目的地。出现/var/spool/clientmqueue/非常大的情况通常因为没有合适的MTA发送邮件,就都积累在这里了,假如这里的邮件并不是你需要的,比如是系统默认发的每分钟跑一次的什么什么cron的信,你可以简单的删掉他们。当然,文件多了一些,直接rm -f *,系统可能会说argument too long什么的,没有关系,find /var/spool/clientmqueue/ -type f –delete或者find /var/spool/clientmqueue/ -type f -exec rm {} \+可能对你有帮助,当然这两条命令要求find的版本比较新。如果不幸你的版本比较低,可以尝试find /var/spool/clientmqueue/ -type f -exec rm {} \;
原因分析:系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件;
解决办法:
1、 将crontab里面的命令后面加上> /dev/null 2>&1
2、 知识点:
2>:重定向错误。
2>&1:把错误重定向到输出要送到的地方。即把上述命令的执行结果重定向到/dev/null,即抛弃,同时,把产生的错误也抛弃。
使用du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录
注:/是系统目录,可以cd到当前目录下执行du -sh *
- Linux cron输出导致僵尸进程案例及解决
- Linux cron输出导致僵尸进程案例及解决
- Linux解决僵尸进程
- Linux僵尸进程的解决
- Linux的僵尸进程解决攻略
- Linux的僵尸进程解决攻略
- Linux 僵尸进程产生及如何避免
- Linux僵尸进程产生及如何避免
- Linux僵尸进程产生及如何避免
- Linux僵尸进程产生及如何避免
- Linux--进程--僵尸进程
- 解决僵尸进程
- 解决僵尸进程
- 解决僵尸进程
- linux的僵尸进程和孤儿进程及解决方法
- 孤儿进程及僵尸进程
- linux中的。"僵尸"进程
- 关于linux 僵尸进程
- window下设置apache虚拟主机
- [noj 1561] Set Time
- Java语言中的值传递与引用传递
- poj 3177 Redundant Paths
- Nginx学习之十-超时管理(定时器事件)
- Linux cron输出导致僵尸进程案例及解决
- XMPPFrameWork IOS 开发(一)xmpp简介
- 美国名校为何青睐爱吃泡面的考生
- 正则表达式语法
- XCode检测不到iphone设备 解决方案
- 浅析linux内核内存管理之buddy system
- ArcGIS中的投影变换
- _onexit用法
- jQuery Validation让验证变得如此容易(三)