正文

处理postdrop、sendmail大量进程导致服务器爆满

今天上服务器发现服务器资源占用跑了100%,看了下发现有几千个postdrop和sendmail。

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

问题原因

crontab是我们系统的定时任务,crontab出现错误时会触发发送邮件的操作。邮件通过sendmail发送,然后sendmail调用postdrop发送。系统的postfix没有运行邮件发送失败,然后postdrop和sendmail进程无法正常退出,形成大量的僵尸进程。

解决方式

先结束掉postdrop、sendmail进程

killall sendmail && killall postdrop

修改配置文件,关闭邮件通知。

1.修改配置文件/etc/crontab

进入/etc/目录后,搜索crontab编辑。将MAILTO=root修改为MAILTO=""

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

2.修改配置文件/etc/cron.d/0hourly

打开目录/etc/cron.d/,查找0hourly并编辑。将MAILTO=root修改为MAILTO=""

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

3.修改定时任务

远程连接后,crontab -e进入编辑界面。在第一行添加MAILTO=""

处理postdrop、sendmail大量进程导致服务器爆满处理postdrop、sendmail大量进程导致服务器爆满

然后保存退出。

 

如果说上面方式不生效

定时任务里定时执行:killall sendmail && killall postdrop

😂😂

 

crontab语法

crontab [-u user] [-l | -r | -e] [-i] [-s] [-v] [-x [num]] [file]

-u user:指定要编辑的用户的 crontab 文件,默认为当前用户。
-l:列出当前用户的 crontab 文件内容。
-r:删除当前用户的 crontab 文件。
-e:编辑当前用户的 crontab 文件。
-i:在删除 crontab 文件时进行确认提示。
-s:显示 crontab 文件的状态信息。
-v:显示 crontab 命令的版本信息。
-x [num]:设置 crontab 文件的加密级别,默认为 0,不加密。num 可以是 0~9 之间的任意数字。
file:指定要安装的 crontab 文件。