由于crondtab定时任务导致大量sendmail进程的解决办法

简介:

早上六点多钟有一台服务器告警说宕机了,尝试登陆发现登陆服务器没问题,ps -ef | grep mysql的时候发现mysqld服务也还在,mysql错误日志也没有任务报错。但是查看vim /var/log/messages时发现是硬盘有问题,尝试touch一个文件的时候提示‘read-only file system’,于是联系机房检测故障。


但是当执行top的时候发现当前用户下面有很多sendmail的进程,如下图所示,发件人是crondaemon,怀疑是和定时任务有关,查看当前用户的定时任务发现有一个每分钟运行一次的定时任务,但是定时脚本是没有调用sendmail了,ps -ef | grep sendmail | wc -l 统计发现sendmail的进程数据基本上就是从服务器出故障到当前时间的分钟数。

wKiom1g-kpHwupKwAAC83P5yQLw090.png-wh_50


然道是crontab每次执行都会调用sendmail发邮件吗?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 a result of running commands in "this" crontab.  If MAILTO is defined (and non-empty), mail is sent to the user so 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 doesnt do aliasing, and UUCP usually doesnt read its mail. If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ‘‘root’’ will be used.



查看crontab的配置文件:

cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/


可以看到MAILTO这一行不为空,如果不想让它发邮件的话可以按照手册上面说的把MAILTO这一行删掉或者改为MAILTO=""




本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1878182
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
定时任务频繁插入数据导致锁表问题 -> 查询mysql进程
52 1
|
关系型数据库 MySQL
mysql中有大量sleep进程的原因与解决办法
mysql中有大量sleep进程的原因与解决办法
771 0
|
数据可视化 Java Python
python可视化界面调用了某函数导致进程阻塞解决办法
python可视化界面调用了某函数导致进程阻塞解决办法
|
Python
解决办法:C向Python传递字串数组导致进程崩溃
解决办法:C向Python传递字串数组导致进程崩溃
144 0
|
缓存 自然语言处理 监控
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
Linux中的crontab 定时任务设置、Linux中top 实时监控系统进程状态Linux中的pstree 查看进程树、netstat 显示网络状态和端口占用信息
|
Linux 调度 Python
Python 实现定时任务,推荐APScheduler框架(样例代码附带进程间通信)
Python 实现定时任务,推荐APScheduler框架(样例代码附带进程间通信)
|
SQL Oracle 关系型数据库
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
371 0
Oracle 数据库利用sql语句杀掉用户session进程,“ORA-01940: 无法删除当前连接的用户“问题解决办法
|
Python
python 技术篇-pythoncom.PumpMessag()关闭、杀死它的进程,pythoncom.PumpMessag()运行卡住解决办法
python 技术篇-pythoncom.PumpMessag()关闭、杀死它的进程,pythoncom.PumpMessag()运行卡住解决办法
676 0