繁体   English   中英

如何检查可执行 JAR 是否已开始/完成运行?

[英]How can I check if executable JAR has started/finished running?

我有多个可执行的 JAR,我们称它们为task1.jartask2.jartask3.jar等……它们主要访问数据库并在服务器上做家务。

它们由 cron 作业运行,一个接一个,每天一大早。 crob 作业相隔大约 15 分钟。

crob 工作只需调用:

java -jar taskX.jar

根据数据库上的数据,它们完成的持续时间会有所不同。

任务执行不得重叠。 否则当他们同时访问数据库时,服务器会崩溃。 当一项任务运行时间过长并且在另一项任务开始之前尚未完成时,曾经发生过这种情况。

所以我的问题是......无论如何检查一个 JAR 已经开始或完成,以便下一个 JAR 可以延迟?

我最好使用 Java 方法解决这个问题,而不是更改我访问受限的服务器上的任何配置。


编辑:@mksmanjit 对不起,我之前没有提到。 还有一个并发症 - 并非所有这些都每天运行。 例如, task1.jartask3.jar可能每天运行一次, task2.jar可能每两天运行一次, task4.jar可能每周一、三、五等运行一次……所以情况会变得相当复杂。

我看到的几种方法!

  1. 让所有 JAR(或任务)将Logs写入一个commonseparate的日志文件中。 (如果您只想捕获次要细节,例如开始时间、停止时间、结果等,通常可行)假设您保留的格式是手动可读的。

  2. 根据上面的建议,在DB中创建一个Table来跟踪任务活动以及任务名称,它的详细信息,如触发者、开始时间、结束时间、结果等

  3. 或者,创建数据库Triggers来监视数据库表上的事件(例如写入或读取),并且每当您的任务执行时,触发器也会根据您希望触发器执行的数据库操作执行,例如发送e-mail 、写入表、打印简单日志

  4. 让 JAR(或任务)也在控制台上打印日志,以防万一假设它们被设计为在运行时从任何控制台或 UI 中查看!

暂无
暂无

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

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