linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

最近开发项目的时刻发现公司服务器用root账号登录的时刻 一直会提醒有新的信件,一直提醒一直提醒。

 linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

联想到另一台服务器上 的dead.letter文件天天都不停的变大  而且在 root家目录里 ,系统硬盘里。过十天半个月就会收到

服务器的磁盘使用率超90%的报警短信, 我突然感受是时刻去除了一下这个问题了。之前就四处搜索dead.letter 问题。然则一直没有

靠谱的跟我这个问题一样的。

行了不空话了 。

 linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

 

直入主题,经由不停的搜索。终于在一个外文网站上找到了谜底,主要原因我的服务器上有大量的准时义务 crontab ,而crontab中curl下令

执行有输出返回的信息后 ,linux会给对的crontab执行者 返回信息。而这个返回的信息就是通过邮件发给你的,通过邮件你可以查看你的准时义务

执行的情形 。而在这个执行义务的剧本中,有不少的开发小童鞋为了调整输出了不少内容 ,同时这个内容就返回到里你的邮箱里。这个执行一两次没有

什么问题。然则若是他几分钟就执行一次  或者是一分钟执行一次 ,那输出到你邮箱的内容就会很多了 。就像你的邮箱被垃圾流氓骚扰广告邮箱不停的

轰炸一样。

linux crontab 定时任务 邮件问题 及其相关的 dead.letter 问题

如何在Vim中更改颜色和主题

 

而谁人 dead.letter  死信也是一样 ,不知道linux对应用户的邮箱没有了 ,被删除掉了。投递信件的时刻没有信箱了,这个时刻就会天生 dead.letter 。知道这个也就知道若何解决了,

进入 /var/spool/mail/  目录这里是每个用户的信箱  找到缺少的用户  touch 新建一个就可以了 。之后就不会再有死信问题了  。以后再有信件的话就会投入对应的用户文件名中。

 

说了半天照样没说,怎么去除发送邮件的问题。

照样整理一下英文的谁人QA吧,我看明了了  相信你也没问题。

 

问: 
我有一些cron作业在Linux系统上隔夜运行。若是需要查看,这些作业中的每一个都会将信息输出到文本文件中。有些被编写为通过mail下令发送电子邮件。
然则,由于我将这些剧本放在了新系统上并添加到了crontab中,因此我收到了有关运行的每个作业的电子邮件。根目录发送的电子邮件过多。有没有设施住手这种行为?  
答:
 Crond通常在执行cron作业时发送电子邮件。它使用/ etc / crontab中的MAILTO变量来确定谁吸收电子邮件,默认情形下该用户是root。有几种方式可以住手此行为。  
1.将MAILTO变量更改为空缺。  
您可以编辑/ etc / crontab文件,并将MAILTO变量更改为以下内容: MAILTO=””  
这将有效地禁用来自cron守护程序的所有电子邮件。然后,您可以在剧本中决议使用mailx下令或您选择的下令发送邮件。  
这不是我的首选方式,由于当cronjob泛起错误时,我希望吸收电子邮件。  
2.将STDOUT和STDERR重定向为null以抑制输出。  
通过抑制剧本的输出,crond可以发送任何内容。  
将以下内容添加到crontab条目中,以将所有输出(STDERR和STDOUT)发送到/ dev / null。例如: >/dev/null 2>&1   0 5 * * * /example/script >/dev/null 2>&1
这也有缺点,由于您将抑制所有可能有助于调试剧本问题的错误。  
3.设置crond将剧本输出发送到系统日志,并禁用发送输出邮件。  
您可以通过编辑/ etc / sysconfig / crond文件并更改CRONDARGS行来设置crond。添加“ -s”参数会将输出发送到系统日志,添加“ -m off”参数将克制crond发送作业输出的电子邮件。  
例如:您将必须重新启动crond服务以读取新的参数: [root@centos7 ~]# cat /etc/sysconfig/crond # Settings for the CRON daemon. # CRONDARGS= :  any extra command-line startup arguments for crond CRONDARGS=-s -m off     systemctl restart crond.service
当作业运行时,以上任何一种方式都可以完全抑制来自cron守护程序的电子邮件。这在我看来并不理想,由于若是我的cron作业泛起错误,我想得到通知。我更喜欢写我的剧本以不发生任何输出(没有尺度输出,但仍然输出错误),或者只将STDOUT重定向到/ dev / null。若是发生错误,这将导致crond仅发送电子邮件。  
仅仅重定向STDOUT的示例: 0 5 * * * /example/script > /dev/null

 

 

 这就是我看到的解决方案

 

 

 改写一下设置就可以了  固然你也可以在每行义务中添加。

看到这个的时刻 我也是才明了 fastadmin中推荐的 准时义务的花样 为什么是 

* * * * * /usr/bin/php /www/yoursite/public/index.php /addons/crontab/autotask/index > /dev/null  2>&1 &

原创文章,作者:2d28新闻网,如若转载,请注明出处:https://www.2d28.com/archives/19515.html