关于crontab定时任务执行失败发送报错邮件的问题

      前几天,发现一个在服务器通过crontab执行的一个java程序,突然不执行了。后来经过排查,是由于运维在其他项目上线的时候,不知道什么原因,导致crontab中jar文件的执行,通过java -jar执行不了了,必须修改为java的全路径/usr/java/jdk1.7.0_79/bin/java -jar才可以执行。原因因该是java的一些什么路径问题,这个没有具体去了解。

    就打算在程序中添加一个监控,不然程序挂了也不知道,必须数据出现问题了,才有可能发现问题。

  首先,在程序中添加监控是没有用的(而且程序中本来就有监控的),因为是java路径导致的问题,所以Java 程序根本就没有执行,里面写再多监控,程序不执行的话,也是没用的啊。

  就想着crontab中是不是有监控的功能,毕竟这个是crontab任务执行失败了,后来在网上发现了这篇文章

  http://my.oschina.net/abcfy2/blog/200351 

  我测试了一下 可以通过MAILTO定义一个自己的邮箱,来接收邮件。但是问题又来了,这个会把所有的stdout输出都通过邮件发送给你,由于我的程序是会产生日志的。这就导致,程序每次执行,都会给我发送邮件,起不到想要的效果。

  然后就在网上找到了这篇文章

  http://blog.csdn.net/aderben/article/details/16841027

  看到这个地方:

**************************************************

先看一个例子:

0 2 * * * /u01/test.sh >/dev/null 2>&1 &

 

这句话的意思就是在后台执行这条命令,并将错误输出2重定向到标准输出1,然后将标准输出1全部放到/dev/null 文件,也就是清空。

 

在这里有有几个数字的意思:

       0表示键盘输入

       1表示标准输出

       2表示错误输出.

********************************************************

 想到可不可以通过只有错误输出的时候,才发送邮件呢? 经过测试,终于成功了,最终的命令这样写就可以了:

 

MAILTO=username1@mail.com,username2@mail.con(可以定义多个邮箱接受,逗号分割)

0,15,30,45 * * * * /usr/java/jdk1.7.0_79/bin/java -jar userjava.jar 2 > /dev/null 1>&1

意思是在执行程序的时候,只有错误输出才会输出(userjava.jar 2 >    这个2 定义的程序的错误输出)   输出到/dev/null 也就是清空   后面的1>&1表示前面程序的输出结果 保存

 

 

 
 
 
 

转载于:https://www.cnblogs.com/worez/p/4999991.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值