正文
处理postdrop、sendmail大量进程导致服务器爆满
今天上服务器发现服务器资源占用跑了100%,看了下发现有几千个postdrop和sendmail。
问题原因
crontab是我们系统的定时任务,crontab出现错误时会触发发送邮件的操作。邮件通过sendmail发送,然后sendmail调用postdrop发送。系统的postfix没有运行邮件发送失败,然后postdrop和sendmail进程无法正常退出,形成大量的僵尸进程。
解决方式
先结束掉postdrop、sendmail进程
killall sendmail && killall postdrop
修改配置文件,关闭邮件通知。
1.修改配置文件/etc/crontab
进入/etc/目录后,搜索crontab编辑。将MAILTO=root修改为MAILTO=""
2.修改配置文件/etc/cron.d/0hourly
打开目录/etc/cron.d/,查找0hourly并编辑。将MAILTO=root修改为MAILTO=""
3.修改定时任务
远程连接后,crontab -e进入编辑界面。在第一行添加MAILTO=""
然后保存退出。
如果说上面方式不生效
定时任务里定时执行: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 文件。