Linux crond 引发的僵尸进程

这篇主要介绍僵尸进程数量异常的排查过程,最终排查到是crond定时任务标准输出多导致的

问题描述

有一台主机经常告警有大量的僵尸进程,不处理也会恢复,但是不正常而且可能会影响到业务,需要排查一下问题原因

初步分析

1、先找出僵尸进程

man ps 找到僵尸进程的相关信息

Processes marked <defunct> are dead processes (so-called "zombies") that remain because their parent has not destroyed them properly.

        Z    defunct ("zombie") process, terminated but not reaped by its parent

大致意思就是进程已经挂了,但是由于父进程还未销毁,就仍然未回收

2、那我们就得先找到父进程了,发现是定时任务导致的,查看定时任务的脚本,未发现明显异常

# ps -ef|grep defunct
root     10172 10103  0  2021 ?        00:00:00 [sendmail] <defunct>
root     11498 11459  0 May02 ?        00:00:00 [sendmail] <defunct>
root     18615 18555  0 May10 ?        00:00:00 [sendmail] <defunct>
root     18644 18605  0 17:05 ?        00:00:00 [sendmail] <defunct>
root     19872 17552  0 17:05 pts/2    00:00:00 grep --color=auto defunct
root     30109 30041  0  2021 ?        00:00:00 [sendmail] <defunct>
# ps -ef|grep 18605
root     18605  5750  0 17:05 ?        00:00:00 /usr/sbin/CROND -n
root     18610 18605  0 17:05 ?        00:00:00 sh analysis.sh
root     18644 18605  0 17:05 ?        00:00:00 [sendmail] <defunct>
root     21737 17552  0 17:05 pts/2    00:00:00 grep --color=auto 18605

3、网上搜索[sendmail] <defunct> 发现有如下几种情况:

(1)/etc/crontab 的 MAILTO参数 未置空  sendmail defunct 进程重复启动问题 – 尚站互联

(2)Linux cron输出不指空引起的报警问题 Linux cron输出不指空引起的报警问题 - 知乎

4、检查发现第一种情况不是原因,尝试第二种情况,暂时没有大量新增的僵尸进程观测到

5、后期检查监控,发现处理第5条以后,僵尸进程偶有发生,但是不是前期规律性的产生了,问题解决

6、检查系统日志,僵尸进程发生时间段,发现存在如下报错,说是报错缺少库文件

grep 'cron' /var/log/message|more 
crond: /usr/sbin/sendmail: error while loading shared libraries: 
libmysqlclient.so.18: cannot open shared object file: No such file or directory

7、最终是通过将定时任务的输出重定向解决sendmail 的发起解决的,具体这个sendmail 失败的问题暂时没什么影响

总结

本次大量僵尸进程,应该是第二种情况,由于定时任务执行的脚本产生了大量的标准输出导致crond 去调用 sendmail 去发邮件给用户邮箱,然后没有配置用户邮箱,导致smtp邮件发送失败,产生[sendmail] <defunct> 僵尸进程,这个一般会被回收,但是也可能出现长时间未被回收的情况

另外检查系统日志,发现定时任务有报错,但是仅偶有僵尸进程产生,暂不处理

相关推荐

  1. Linux crond 引发僵尸进程

    2024-02-01 06:48:01       60 阅读
  2. linux中僵尸进程

    2024-02-01 06:48:01       21 阅读
  3. 如何杀死服务器出现僵尸进程

    2024-02-01 06:48:01       46 阅读
  4. linux 僵尸进程 关闭看不见进程

    2024-02-01 06:48:01       54 阅读
  5. Linux - 清理僵尸进程

    2024-02-01 06:48:01       60 阅读
  6. 僵尸进程_ZombieProcess

    2024-02-01 06:48:01       41 阅读
  7. 僵尸进程111

    2024-02-01 06:48:01       29 阅读
  8. 僵尸进程和孤儿进程

    2024-02-01 06:48:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-01 06:48:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-01 06:48:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-01 06:48:01       82 阅读
  4. Python语言-面向对象

    2024-02-01 06:48:01       91 阅读

热门阅读

  1. 图像的拉普拉斯变换实现

    2024-02-01 06:48:01       48 阅读
  2. opencv笔试题案例

    2024-02-01 06:48:01       48 阅读
  3. Redis中间件加固策略,防止数据泄露

    2024-02-01 06:48:01       45 阅读
  4. 计算机视觉:机器的“眼睛”

    2024-02-01 06:48:01       52 阅读
  5. c# datatable 通过反射转成泛型list

    2024-02-01 06:48:01       59 阅读