最近开发项目的时候发现公司服务器用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命令发送电子邮件。
但是,由于我将这些脚本放在了新系统上并添加到了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 &

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

  1. 【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...

  2. Linux crontab 定时任务

    http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html 19. crontab 定时任务 通过crontab 命令,我们 ...

  3. linux crontab 定时任务解析

    -----------crontab定时任务---------------------- 检查crontab工具是否安装 crontab -l 检查crontab服务是否启动 service cron ...

  4. linux crontab定时任务运行shell脚本(shell执行sql文件)

    https://www.cnblogs.com/tiankongjava/p/6106743.html 今天做个linux定时任务(每晚12点把表汇总). 顺便写个博客记录一下~~ 为什么用linux ...

  5. linux crontab定时任务调用CI框架PHP代码

    *****监控项目中使用*****: sudo crontab -u wangyan -e i 5,25,45 * * * * wget http://xxx.xxx.com/xxx/xx Esc : ...

  6. Linux Crontab 定时任务 命令详解

    一. Crontab 介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行. 1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些调 ...

  7. Linux crontab 定时任务命令详解

    一.简介 crontab 命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 crontab 文件中,以供之后读取和执行.通常,crontab 储存的指令被守护进程激活, cr ...

  8. linux crontab定时任务详解

    1.  为当前用户创建cron服务: crontab  -e 例如 文件内容如下(每隔1分钟执行sql脚本): */1 * * * * mysql -h127.0.0.1 -uroot -proot ...

  9. [转] Linux Crontab 定时任务 命令详解

    一.  Crontab 介绍 crontab命令的功能是在一定的时间间隔调度一些命令的执行. 1.1 /etc/crontab 文件 在/etc目录下有一个crontab文件,这里存放有系统运行的一些 ...

随机推荐

  1. 【HIVE高级笔试必备题型】(组内topN、相邻行的值比较问题)求语文大于数学_/_求文科大于理科成绩的学生

    Hive SQL练习之成绩分析 数据:[id, 学号,班级,科目,成绩] 1,1,1,yuwen,80 2,1,1,shuxue,85 3,2,1,yuwen,75 4,2,1,shuxue,70 5 ...

  2. 【Mybatis】mybatis开启Log4j日志、增删改查操作

    Mybatis日志(最常用的Log4j) 官方网站http://www.mybatis.org/mybatis-3/zh/logging.html 1.在src目录下创建一个log4j.propert ...

  3. Java实现 蓝桥杯VIP 算法训练 无权最长链

    试题 算法训练 无权最长链 问题描述 给定一个n节点m边的无圈且连通的图,求直径 输入格式 第一行两个数字n,m 接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式 要求用户的输出满足的格 ...

  4. Java实现 LeetCode 769 最多能完成排序的块(单向遍历)

    769. 最多能完成排序的块 数组arr是[0, 1, -, arr.length - 1]的一种排列,我们将这个数组分割成几个"块",并将这些块分别进行排序.之后再连接起来,使得 ...

  5. Java实现 LeetCode 659 分割数组为连续子序列 (哈希)

    659. 分割数组为连续子序列 输入一个按升序排序的整数数组(可能包含重复数字),你需要将它们分割成几个子序列,其中每个子序列至少包含三个连续整数.返回你是否能做出这样的分割? 示例 1: 输入: [ ...

  6. Java实现 LeetCode 622 设计循环队列(暴力大法)

    622. 设计循环队列 设计你的循环队列实现. 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环.它也被称为"环形缓冲器" ...

  7. Java实现 LeetCode 118 杨辉三角

    118. 杨辉三角 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行. 在杨辉三角中,每个数是它左上方和右上方的数的和. 示例: 输入: 5 输出: [ [1], [1,1], ...

  8. java实现顺时针螺旋填入

    从键盘输入一个整数(1~20) 则以该数字为矩阵的大小,把 1,2,3-n*n 的数字按照顺时针螺旋的形式填入其中.例如: 输入数字 2,则程序输出: 1 2 4 3 输入数字 3,则程序输出: 1 ...

  9. 如何安装vue脚手架?

    前提(已经安装好node,可以正常使用npm) 一.cmd输入 npm install vue-cli -g ---- 全局安装vue-cli工具 安装好过后,再输入指令 vue --version ...

  10. STL关联容器

    这里简单学习一下STL关联容器,主要是map.multimap.set.multiset以及unordered_map.前四个底层实现都是利用红黑树实现的,查找算法时间复杂度为\(O(log(n))\ ...