码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-11-27 12:49:23      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

      前几天,发现一个在服务器通过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表示前面程序的输出结果 保存

 

 

 
 
 
 

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

标签:

原文地址:http://www.cnblogs.com/worez/p/4999991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!