关于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表示错误输出.

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

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

[email protected],[email protected](可以定义多个邮箱接受,逗号分割)

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表示前面程序的输出结果 保存

时间: 2025-01-02 11:17:16

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

Windows下Kettle定时任务执行并发送错误信息邮件

Windows下Kettle定时任务执行并发送错误信息邮件 1.首先安装JDK 2.配置JDK环境 3.下载并解压PDI(kettle) 目前我用的是版本V7的,可以直接百度搜索下载社区版,企业版收费,社区版免费 下载地址:https://sourceforge.net/projects/pentaho/files/Data%20Integration/ 4.打开解压文件夹kettle找到spoon.bat,双击打开 5.新建作业 点击左上角文件=>新建=>作业 如下图: 6.然后开始建立作业

手动操作执行,crontab定时任务执行出错,K哥

最近给一台机器搞自动巡检发邮件 之前其他机器用的都是sendmail 直接执行下面的命令是没有问题的 这台由于有别的业务所以装的是postfix 下面是我的定时任务 0 8 * * * /opt/xunjian/xunjian.sh > /opt/xunjian/xunjian;mail -s '22.44.55.66' [email protected] < /opt/xunjian/xunjian 手动执行效果理想,邮件中可以直接显示结果 /opt/xunjian/xunjian.sh &

Linux crontab定时任务执行php文件

简单介绍一下什么是crontab crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务 第一步:安装crontab 检测是否已安装 # crontab -bash: crontab: command not found   (未安装) #  yum install cront

linux crontab 定时任务执行

cron机制        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制 crontab参数        -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontabs # Example of job definition:# .---------

Laravel5.5 邮件发送报错:stream_socket_client()

具体报错如下: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed 原因: php openssl 没有加载 ca 证书 , 去下载个 ca 证书然后添加进去即可 解决: 0.查看phpinfo().检查openssl.ca

javamail邮件发送报错解决方案

如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream原因是jar包版本不统一,解决方法如下: 删除Java EE 5 Libraries/javaee.jar/mail里的包有东西. 具体方法如下:用rar打开X:/Program Files/MyEclipse 6.0/myeclipse

crontab查看执行结果,删除指定定时任务

写完crontab定时任务,并不知道他的执行结果,我们可以通过grep "脚本名" /var/log/cron命令,查看执行的结果 [[email protected] default]# grep "index.php" /var/log/cron Jun 14 21:14:01 bogon CROND[4542]: (han) CMD (/home/wwwroot/index.php) Jun 14 21:14:01 bogon CROND[4541]: (ha

crontab定时任务居然不执行

前言 最近在工作中遇到了一些问题,crontab定时任务居然不执行,后来我在网上找的时候发现网上主要说了这5个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止.如果停止了就无法执行任何定时任务了,解决的方法是打开它: ? 1 crond 或 ? 1 service crond start 如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装: ? 1 yum -y install

对于crontab定时任务不能自动执行的总结

最近遇到了一些sh不能在crontab定时任务中自动执行的问题 期间由于不太了解,故走了一点弯路,现在总结下来可能第一次 进行设置遇到的问题.以绝后患!我所用过的操作系统为HP-unix&linux&sco-unix,均测试通过 1,首先确保sh脚本具有可执行属性 即chmod +x  ***.sh 或chmod +777 ***.sh 2,确保sh脚本手工执行正常 即在当前系统内手工执行sh脚本以后能收到自己期望得到的结果 3,加载环境变量 这个问题是经常容易被忽略的问题,通常我们在第二