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

How to control Linux java cron jobs from web appication?

现在我们在 Linux 环境中 运行 java cron 作业。 start/stop 的工作是通过 Linux 命令在 putty 上完成的。这将每天安排 automatically.but 我的要求是我想从 UI(比如 spring 网络应用程序)控制那些 cron 作业。例如开始工作、停止工作、工作的当前 运行 状态。有没有可用的图书馆?请建议。谢谢。

是的,有签出: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);
        }
     }

您可能想在 GitHub 上查看我们的 QuartzDesk Executor (QE) 免费开源应用程序。 QE 是一个基于 spring 的 Java 网络应用程序,构建在流行的 Quartz 调度程序 API 之上,开箱即用,它允许您安排以下类型的执行 tasks/jobs:

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

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

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

QuartzDesk 可以拦截由执行的作业产生的日志消息。这些日志消息对于所有当前正在执行的作业都是可见的,因此您可以在运行时看到您的作业当前正在做什么(!)。在执行历史视图中,您可以看到所有已完成作业执行的日志消息。对于 OS-native 作业(shell 脚本、可执行命令等),QuartzDesk 可以拦截这些作业在其标准和错误输出中生成的消息。

这是连接到 QE 实例的 QuartzDesk GUI 的样子: