crontab 任务报错生成小文件及邮件告警处理

发布时间 2024-01-11 16:06:06作者: 星空夜影

CRONTAB服务不断发邮件问题解决

问题背景

操作系统: Linux SuSe12ps5

规格: 4C8G

现在描述: 操作系统异常卡慢,甚至无法正常登录到服务器,服务器/var/log/messages 的日志过大,撑爆了/var 目录磁盘空间。

/var/spool/postfix/maildrop 目录不存在会导致一起调起sendmail 与 postdrop 的进程,进程达到系统限制的最大进程数后,服务器就挂了。

如果此时服务器上面的crontab 任务中有报错信息,执行失败,产生的日志无法生成在 /var/spool/postfix/maildrop目录下,这将会导致产生一些报错会打印在 /var/log/messages 的日志中。日志打印超越多,日志文件的大小就越大,最终磁盘空间被日志占满。

解决的方法:

  • 首先要把服务器上面sendmail进程与postdrop 进程都杀掉,释放进程的资源。
  • 其次要补充 /var/spool/postfix/maildrop这个目录,让crontab 任务报错产生的小文件能写到这个目录下面。
  • 要定时清理这个 /var/spool/postfix/maildrop目录下面产生的小文件
  • 可以关闭crontab 产生的邮件,方法后面所示。

不接受邮件的三个方法

  1. 配置crontab 的任务文件,在首行中配置 MAILTO=""
  2. /etc/sysconfig/crond 配置文件中加入配置 CRONDARGS= -m off #拒绝接受邮件(没有验证过,SUSE的操作系统上没有这个文件,只有一个 /etc/sysconfig/cron的文件)
  3. 配置crontab 的任务文件中, 直接把命令执行的结果放入到空洞中 * * * * * 执行命令或脚本 [参数] &> /dev/null
    或者是 * * * * * 执行命令或脚本 [参数] > /dev/null 2>&1
  4. /etc/crontab 中的MAILTO设置成 ""