[故障分析]出现大量僵尸进程(zombie)
来源:互联网 发布:微道网络推广团队 编辑:程序博客网 时间:2024/05/03 21:09
环境:SUSE Linux Enterprise Server 11 SP2
检测到一个suse系统的zombie达到100多个
登录服务器检测
首先查询是哪个进程引起的
ps -ef|grep defusfhadm 7444 7443 0 02:10 ? 00:00:00 [test.sh] <defunct>sfhadm 7463 7462 0 02:12 ? 00:00:00 [test.sh] <defunct>sfhadm 7481 7480 0 02:14 ? 00:00:00 [test.sh] <defunct>
注:这是我后面重现故障的数据
但是这个脚本并没有问题的,也没人改过,以前一直是正常运行的。
看一下这个脚本的父进程是哪个程序
linux-dkcm:~ # ps -ef|grep 7443root 7443 3282 0 01:12 ? 00:00:00 /usr/sbin/cron
发现这些进程的父进程都是cron,也就是定时任务程序crontab
进这个用户查看一下
$crontab -lcannot chdir(/var/spool/cron), bailing out./var/spool/cron: Permission denied
发现提示没有权限进入/var/spool/cron这个目录
再看一下这个程序的权限:
ls -la /usr/bin/crontab-rwxr-xr-x 1 root trusted 40432 Jan 24 2012 /usr/bin/crontab
原来少了s位
s位相当于给普通用户临时提权的作用
crontab 少了s位就没办法执行
加上s位
chmod 6755 /usr/bin/crontab
把原先的僵尸进程全部杀掉
注意:要杀父进程,子进程是杀不掉的
ps -ef|grep defunct|grep -v grep|awk '{print $3}'|xargs kill -9
本来以为成功解决了这个问题
但观察了一下,僵尸进程还是在产生。
查了一下历史记录,发现有人在前一天执行过
chmod 775 /usr -R
这样把/usr目录下所有带有s位的程序全部消除了。
看来还有其它的程序受到了影响而引起crontab的不正常运行。
查看一下crontab是否有调用其它进程:
#pstreeinit─┬─acpid ├─auditd─┬─audispd───{audispd} │ └─{auditd} ├─bonobo-activati───{bonobo-activati} ├─console-kit-dae───63*[{console-kit-dae}] ├─cron───17*[cron─┬─sendmail───postdrop] │ └─test.sh]
原来crond在执行脚本时会调用sendmail将脚本输出信息以邮件的形式发送给crond用户
查看了一下sendmail进程数
果然有很多
ps -ef|grep sendmail|wc -l309
但是在其它系统中查看,sendmail并没有带s位的,而看pstree中,后面还会调用postdrop处理邮件,在其它系统中查看了一下postdrop,是带有s位的,正是因为前面执行chmod 755 /usr -R
把这个程序的s位也去掉了,引起cron权限问题,而造成进程变成僵尸进程。
给这个程序添加上s位:
chmod 6755 /usr/bin/postdrop
观察了一下,没有再出现僵尸进程了。
可以将/etc/crontab的MAILTO设为”“,这样crontab不再发送日志
排查僵尸进程常用命令:
ps -ef|grep defu
strace(有一次就碰到一个脚本产生僵尸进程,就通过这个命令进行跟踪解决的,也是非常有用的一个命令)
lsof
ldd
pstree
- [故障分析]出现大量僵尸进程(zombie)
- 僵尸进程zombie
- 僵尸进程 (Zombie Process)
- Linux Zombie 僵尸进程
- 什么是僵尸进程(zombie)?
- 僵尸(zombie)进程
- 僵尸进程(Zombie)
- 僵尸进程(Zombie)
- 僵尸进程Zombie process
- 僵尸进程(zombie process)
- Linux 的僵尸(zombie)进程
- 如何察看僵尸进程 zombie
- Linux 的僵尸(zombie)进程
- Linux 的僵尸(zombie)进程
- 僵尸进程(zombie process )
- Linux 的僵尸(zombie)进程
- Linux 的僵尸(zombie)进程
- Linux 的僵尸(zombie)进程
- 银联支付开发问题
- 如何自定义容器网络
- Linux C 文件IO操作
- 小白seo的学习方法
- GD 和图像处理 函数
- [故障分析]出现大量僵尸进程(zombie)
- 多态与对象模型
- 以太坊私链的搭建和智能合约的部署
- Codeforces Round #446 (Div. 2)B. Wrath
- tensorflow基本语法
- Android4.3 Bluetooth 抓取hci log
- Retrofit2的简单使用
- 使用npm管理andular
- zz