探讨:crond 引发大量sendmail进程的解决办法
某服务器账号comm无法登录,说是资源消耗完毕。
于是用另一个账号登陆到服务器,检查common账号到底启动了哪些dd引起资源耗尽:
ps -u common
发现有个 sendmail的启动特别多
例如:
common 31446 31377 0 20:20 ? /usr/sbin/sendmail -FCronDaemon -i -odi -oem -oi -t -f root
鉴于资源耗尽,留下证据后,先杀掉,保证生产:
复制代码 代码示例:
ps -ef|grep "/usr/sbin/sendmail"|grep -v grep |awk '{print $2}'|xargs kill
然后,检查是哪个进程启动了sendmail:
复制代码 代码示例:
ps -ef|grep 31337
发现是crond启动了。
这个进程怎么会调用sendmail呢?
既然是crond启动的,而之前一直好好的,于是询问最近谁修改了crond。
经查,有个同事添加了一个crond记录,一分钟运行一次。
然后,查看sendmail进程:
复制代码 代码示例:
ps -ef|grep sendmail
果然又有了,而且sendmail是1分钟启动一个。
看来就是它了,将它从crontab暂停,2分钟过去。
没有新的sendmail启动,于是将问题就锁定在它身上了。
也没有想到原因,为啥crond会调用sendmail,google之找到了这样一句
crond在执行脚本时会将脚本输出信息以邮件的形式发送给crond用户,而环境的postfix没有正常运行,导致邮件发送失败。
查看maillog,确实有很多错误:
postfix/postdrop[23110]: warning: mail_queue_enter: create file maildrop/749274.23110: No such file or directory
解决方法:
在crontab中第一行增加MAILTO=""发送为空
如果cron有什么原因需要将命令结果发一封邮件,那么就要看MAILTO这部分了,如果给MAILTO赋值了,并且不是空,那么就会发给这个用户;
如果是空,MAILTO="",那就不发任何邮件。
如果没有定义MAILTO,也就是说crontab里面没有写这一行,那么就发给这个crontab的用户
下面来看下man手册中的解释吧。
man 5 crontab
In addition to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if it has any reason to send
mail as aresult of running commands in "this" crontab. If MAILTO is defined (and non-empty), mail is
sent to the userso named. If MAILTO is defined but empty (MAILTO=""), no mail will be sent.
Otherwise mail is sent to the owner of the crontab. This option is useful if you decide on /bin/mail
instead of /usr/lib/sendmail as your mailer when you install cron -- /bin/mail doesn′t do aliasing,
and UUCP usually doesn′t read its mail. If MAIL-FROM is defined (and non-empty),
it will be used as the envelope sender address, otherwise, ‘‘root’’ will be used.
由于我们这个不需要发邮件,于是 在crontab 第一行加上 MAILTO="",到此问题解决了。
本文URL:http://www.51ou.com/browse/xitongguanli/37981.html
探讨:crond 引发大量sendmail进程的解决办法的更多相关文章
- Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
selenium操作chrome浏览器需要有ChromeDriver驱动来协助.webdriver中关浏览器关闭有两个方法,一个叫quit,一个叫close. 1 /** 2 * Close the ...
- cocos2dx 3.9 微信授权登陆后游戏进程结束解决办法
找到 Cocos2dxActivity.java 文件夹 里面的 onDestroy() 方法 if (mGLSurfaceView != null) { Cocos2dxHel ...
- 缓存穿透,缓存雪崩,热点key及解决办法
1.穿透 穿透:频繁查询一个不存在的数据,由于缓存不命中,每次都要查询持久层.从而失去缓存的意义. 解决办法: 持久层查询不到就缓存空结果,查询时先判断缓存中是否exists(key) ,如果有直接返 ...
- 启动PHP study时提示80端口或者3306端口被占用的解决办法
一.查看PID WIN+R打开命令行------>netstat -ano+回车,就会显示下面的信息: 二.打开任务管理器 Ctrl+Alt+Delete------>任务管理器,找到对应 ...
- Hadoop集群datanode死掉或者secondarynamenode进程消失处理办法
当Hadoop集群的某单个节点出现问题时,一般不必重启整个系统,只须重启这个节点,它会自动连入整个集群. 在坏死的节点上输入如下命令即可: hadoop-daemon.sh start datanod ...
- Android 开发之深入理解安卓调试桥各种错误解决办法
摘要: Android开发调试项目使用到安卓调试桥工具,Android Debug Bridge(ADB)位于sdk路径platform-tools文件夹,使用Android Studio或Eclip ...
- 关于csrss.exe和winlogon.exe进程多、占用CPU高的解决办法,有人在暴力破解
关于csrss.exe和winlogon.exe进程多.占用CPU高的解决办法 最近VPS的CPU一直处在100%左右,后台管理上去经常打不开,后来发现上远程都要好半天才反映过来,看到任务管理器有多个 ...
- paip.杀不死进程的原因--僵尸进程的解决.txt
paip.杀不死进程的原因--僵尸进程的解决.txt 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- 无法启动MYSQL服务”1067 进程意外终止”解决办法
原文:http://www.111cn.net/database/mysql/48888.htm 本文章主要是总结了各种导致mysql提示无法启动MYSQL服务"1067 进程意外终止& ...
随机推荐
- 解决Android单个dex文件不能超过65535个方法问题
一.找坑:谷歌规定单个dex文件中的方法不能超过65536的限制 我们编写项目过程中在工程的lib文件夹下引用的第三方插件jar包太多或者项目过大,编译运行时就有可能报出com.android.dex ...
- Struts2学习笔记 - Part.01
1.关于Struts2中的struts.xml文件中action设置 <!-- 它是一个通用action,此处的*表明它可以处理任意的请求--> <action name=" ...
- 配置H3C交换机ftp服务
配置H3C交换机ftp服务,用于与交换机进行文件上传.下载,常用于更新程序上传及配置备份文件下载. 准备工作:三层设备(路由器.三层交换机等)至少一个接口配置IP,二层交换机需配置一个处于UP状态的v ...
- Python笔记17---------魔法方法
魔法方法也为特殊方法,即用两个下划线形成的(__方法__).自己定义的方法最好不要采用这种方式,因为这些方法会在一些特殊的情况下直接被调用. 1.第一个魔法方法:类中常用的__init__()方法:相 ...
- 和大华电子称通讯的奇怪现象-不能关闭Socket客户端的连接
大华电子称作为socket Server,命令自定义成02+命令+0d0a03格式.,返回给客户端的字符串也是自定义的.这就给懒人造成非常不方便. 最关键的是连接server后,disconnec没有 ...
- 【hiho一下第十二周】刷油漆
[题目链接]:http://hihocoder.com/problemset/problem/1055 [题意] [题解] 设f[x][i]表示以第x个节点为根的子树; 不选x这个节点,然后子树里面选 ...
- 监控Weblogic计数器
- volatile可见性和指令重排
volatile关键字的2个作用 1.线程的可见性 2.防止指令重排 什么是线程的可见性? 线程的可见性 就是一个线程对一个变量进行更改操作 其他线程获取会获得最新的值. 线程在执行的行 操作主线程的 ...
- mybatis逆向工程不生成Example
mybatis逆向生成映射文件时会生成一大堆example文件,没感觉有啥用,可以手动删除这些多余的东西,使项目变得好看许多 也可以通过配置达到目的: 原配置: <table tableName ...
- BA-siemens-ppm模块调试
第一部分:现场接线 1. 拨码:朝向数字那一端为0,远离数字那一端为1,PPM的地址设定方法就是将拨码器拨为跟系统架构表一样的数字,比如一个1U32的编号为77020,那么它的编号就是20,将4和16 ...