linux crontab 批处理文件 回复邮件问题 及其相关的 dead.letter 问题
最近开发项目的时候发现公司服务器用root账号登录的时候 一直会提示有新的信件,一直提示一直提示。
联想到另一台服务器上 的dead.letter文件每天都不断的变大 而且在 root家目录里 ,系统硬盘里。过十天半个月就会收到
服务器的磁盘使用率超90%的报警短信, 我突然感觉是时候去除了一下这个问题了。之前就到处搜索dead.letter 问题。但是一直没有
靠谱的跟我这个问题一样的。
行了不废话了 。
直入主题,经过不断的搜索。终于在一个外文网站上找到了答案,主要原因我的服务器上有大量的定时任务 crontab ,而crontab中curl命令
执行有输出返回的信息后 ,linux会给对的crontab执行者 返回信息。而这个返回的信息就是通过邮件发给你的,通过邮件你可以查看你的定时任务
执行的情况 。而在这个执行任务的脚本中,有不少的开发小童鞋为了调整输出了不少内容 ,同时这个内容就返回到里你的邮箱里。这个执行一两次没有
什么问题。但是如果他几分钟就执行一次 或者是一分钟执行一次 ,那输出到你邮箱的内容就会很多了 。就像你的邮箱被垃圾流氓骚扰广告邮箱不断的
轰炸一样。
而那个 dead.letter 死信也是一样 ,不知道linux对应用户的邮箱没有了 ,被删除掉了。投递信件的时候没有信箱了,这个时候就会生成 dead.letter 。知道这个也就知道如何解决了,
进入 /var/spool/mail/ 目录这里是每个用户的信箱 找到缺少的用户 touch 新建一个就可以了 。之后就不会再有死信问题了 。以后再有信件的话就会投入对应的用户文件名中。
说了半天还是没说,怎么去除发送邮件的问题。
还是整理一下英文的那个QA吧,我看明白了 相信你也没问题。
问: 我有一些cron作业在Linux系统上隔夜运行。如果需要查看,这些作业中的每一个都会将信息输出到文本文件中。有些被编写为通过mail命令发送电子邮件。
答: Crond通常在执行cron作业时发送电子邮件。它使用/ etc / crontab中的MAILTO变量来确定谁接收电子邮件,默认情况下该用户是root。有几种方法可以停止此行为。
这就是我看到的解决方案
改写一下配置就可以了 当然你也可以在每行任务中添加。
看到这个的时候 我也是才明白 fastadmin中推荐的 定时任务的格式 为什么是
* * * * * /usr/bin/php /www/yoursite/public/index.php /addons/crontab/autotask/index > /dev/null 2>&1 &
2>&1 的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了 /dev/null。那么标准错误也会输出到/dev/null
可以把/dev/null 可以看作"黑洞". 它等价于一个只写文件. 所有写入它的内容都会永远丢失. 而尝试从它那儿读取内容则什么也读不到.
偶尔也可以把 & 在命令的最后加上,表示让程序后台执行。
以上是 linux crontab 批处理文件 回复邮件问题 及其相关的 dead.letter 问题 的全部内容, 来源链接: utcz.com/a/60501.html