如何知道cron是否运行了某些内容

时间:2018-07-10 12:00:19

标签: java cron quartz-scheduler

我正在使用cron调度程序(石英),由于某些原因(服务器关闭...),有时任务不会触发。我不会检查任务是否运行。我的想法是基于cron进行此操作:我得到以前的开火日期(例如:0 7 11 4 *?=在11:07:00 am,第4天,每个月我应该有2018/07/04),并且我将其与最新任务的日期进行了比较(在db中获取了它):如果不同,则我知道任务没有运行。

我的问题是得到以前的开火日期。 我在此处尝试了以下建议:Finding Last Fired time using a Cron Expression in Javatrigger.getPreviousFireTime();,但仍然无法正常工作……获取下一次触发时间没有问题,但无法获取先前的触发时间(日期为空或错误的日期)。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是syslog。根据您使用的* nix,可以运行:

grep cron (location)

并获取所需的数据。从那里可以随意处理它。

Ubuntu Cron Log Location Linky

我个人将使用这个SO问题来从Java获取此调用的输出:

Call a command from Java

最后,请使用:

grep cron /var/log/syslog | tail -1

将使您仅获得最后一行。在基于Linux的服务器上,该行如下所示:

Jul 10 12:17:01 ---------- junk removed -------------------

我将采用其中的前15个字符并对其进行解析。