繁体   English   中英

作为cronjob运行时如何处理Java运行时错误

[英]How do handle Java runtime errors when running as a cronjob

我正在将Java独立作业作为cronjobs运行。 我注意到,在极少数情况下,作业会因运行时异常(例如OutOfMemoryError)而失败。 Cron的MAIL_TO处理程序似乎并没有解决工作的失败,显然Java应用程序无能为力,因为由于内存错误导致执行停止。

什么是处理此类错误并发出cron警报的最佳实践? 我能想到的最接近的是,每个Java作业都会写入一个“ SUCCESS”日志记录,然后将一个grep链接到cronjob中,并返回一个错误代码,以便cron的MAIL_TO可以选择它。 这样显然会使crontab变得混乱,并且显然需要更改代码才能写入日志条目。

当未捕获的异常完全进入也不对其进行处理的主线程时,JVM(与之关联的进程)将以退出代码1退出。

因此,一种选择是将所有检查的异常都捕获在main()并使用System.exit()以1以外的任何其他值退出(不要以0退出,因为这是成功的“标准”),并且具有cron脚本可以处理任何退出代码(例如,使用$?变量)。

另外,不要忘记默认情况下堆栈跟踪进入stderr。

您为什么不使用try catch块来捕获内存不足异常并在catch块中做必要的事情..当您到达catch块时,您可以创建故障日志记录并将作业添加到日志中

我认为最好的方法是将成功完成标志存储在数据库或日志中,然后基于计数,我的意思是可以检查cron在一天或一周内应运行多少次日志或数据库,以查看是否有任何失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM