如何从Web应用程序控制Linux java cron作业?

时间:2016-11-18 14:56:47

标签: java linux spring cron quartz-scheduler

现在我们在Linux环境中运行java cron作业。并且在putty上通过Linux命令执行作业的启动/停止。这将每天自动安排。但我的要求是我想从UI控制那些cron作业(如春季网络应用程序)。比如开始工作,停止工作,当前的工作运行状态。有没有可用的图书馆?请建议。谢谢。

2 个答案:

答案 0 :(得分:0)

是的,有结账:http://www.quartz-scheduler.org/

它配置了3或4个SQL表,然后您可以列出所有作业,它们的状态,下次运行时等等。

同样快速的例子:

 List<HashMap<String,Object>> jobs = new ArrayList<>();
 Scheduler sch = MyScheduler.getScheduler();
       for (String groupName : sch.getJobGroupNames()) {
        for (JobKey jobKey : sch.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) {
             String jobName = jobKey.getName();
             String jobGroup = jobKey.getGroup();
             List<Trigger> triggers = (List<Trigger>) sch.getTriggersOfJob(jobKey);
             Trigger tg = triggers.get(0);
             Date nextFireTime = tg.getNextFireTime();

             System.out.println("[jobName] : " + jobName + " [groupName] : " + jobGroup + " - " + nextFireTime);

            HashMap<String,Object> jb = new HashMap<>();
             jb.put("triggerKey", tg.getKey());
             jb.put("triggerGroup", tg.getKey().getGroup());
             jb.put("triggerName", tg.getKey().getName());
             jb.put("nextFireTime", nextFireTime);
             jb.put("trigger_state", sch.getTriggerState(triggers.get(0).getKey()));
             jobs.add(jb);
        }
     }

答案 1 :(得分:0)

您可能需要在GitHub上查看我们的QuartzDesk Executor(QE)免费和开源应用。 QE是一个基于Spring的Java Web应用程序,构建于流行的Quartz调度程序API之上,开箱即用,它允许您安排执行以下类型的任务/作业:

  • 本地可执行应用程序和脚本(例如* .sh,* .exe,*。cmd,* bat)。
  • 远程可执行应用程序和脚本(通过SSH)。
  • 外化Java Quartz作业。
  • JDBC查询。
  • HTTP(S)POST请求。

由于QE是开源的,您可以扩展它并添加自己的自定义类型的作业。

QE意味着与我们的QuartzDesk作业管理和监控平台一起使用,该平台提供了额外的功能和体面的GUI。如果您决定尝试使用QuartzDesk平台,您将获得持久的执行历史记录,可视化作业执行统计信息,作业执行通知(电子邮件,即时消息,SNMP陷阱,Web服务调用),作业链等。

QuartzDesk可以拦截已执行作业生成的日志消息。所有当前正在执行的作业都可以看到这些日志消息,以便您可以在运行时查看作业当前正在执行的操作(!)。在执行历史记录视图中,您可以看到所有已完成作业执行的日志消息。对于OS本机作业(shell脚本,可执行命令等),QuartzDesk可以拦截这些作业在标准和错误输出上生成的消息。

这就是连接到QE实例的QuartzDesk GUI看起来像:

QE instance in the QuartzDesk GUI