- 921. Minimum Add to Make Parentheses Valid 使括号有效的最少添加
- 915. Partition Array into Disjoint Intervals 分割数组
- 932. Beautiful Array 漂亮数组
- 940. Distinct Subsequences II 不同的子序列 II
cron总结
cron详解参见:《quartz CronExpression表达式》
CronTrigger配置完整格式为7个: [秒] [分] [小时] [日] [月] [周] [年] ,一般为6个,省去最后那个年。举例:"0/20 * * * * ?" 每20秒执行一次,无限期重复
序号 | 含义 | 默认 | 默认值含义 | 允许填写的值 | 允许的通配符 | 通配符举例 |
1 | 秒 | * | 每秒 | 0-59 | , - * / | 0/20 每20秒 |
2 | 分 | * | 每分 | 0-59 | , - * / | 10,20,30 第10、20、30分钟 |
3 | 小时 | * | 每小时 | 0-23 | , - * / | 8-17 上午8点到下午17点 |
4 | 日 | * | 每日 | 1-31 | , - * ? / L W | 1,15 月的1号和15号 6L 表示这个月的倒数第6天 "15W",表示离每月15号最近的那个工作日触发。如果15号正好是周六,则找最近的周五(14号)触发, 如果15号是周未,则找最近的下周一(16号)触发.如果15号正好在工作日(周一至周五),则就在该天触发。 |
5 | 月 | * | 每月 | 1-12 or JAN-DEC | , - * / | 2,4,6 2月4月和6月 JAN-DEC 1月到12月 |
6 | 周 | ? | 每周 | 1-7 or SUN-SAT | , - * ? / L | SUN-SAT 星期天到星期六 |
7 | 年 | 非必填 | 空 或 1970-2099 | , - * / |
任务类
1 package org.quartz.examples.example3;
2
3 import java.util.Date;
4
5 import org.slf4j.Logger;
6 import org.slf4j.LoggerFactory;
7 import org.quartz.Job;
8 import org.quartz.JobExecutionContext;
9 import org.quartz.JobExecutionException;
10 import org.quartz.JobKey;
11
12 /**
13 * 任务job
14 */
15 public class SimpleJob implements Job {
16
17 private static Logger LOG = LoggerFactory.getLogger(SimpleJob.class);
18
19 // 必须要有public修饰的无参构造函数
20 public SimpleJob() {
21 }
22
23 // 任务执行方法
24 public void execute(JobExecutionContext context) throws JobExecutionException {
25 JobKey jobKey = context.getJobDetail().getKey(); //jobKey长这样:group1.job6
26 LOG.info("执行任务。SimpleJob says: " + jobKey + " executing at " + new Date());
27 }
28
29 }
调度管理类
1 package org.quartz.examples.example3;
2
3 import static org.quartz.CronScheduleBuilder.cronSchedule;
4 import static org.quartz.JobBuilder.newJob;
5 import static org.quartz.TriggerBuilder.newTrigger;
6
7 import org.quartz.CronTrigger;
8 import org.quartz.JobDetail;
9 import org.quartz.Scheduler;
10 import org.quartz.SchedulerFactory;
11 import org.quartz.SchedulerMetaData;
12 import org.quartz.impl.StdSchedulerFactory;
13 import org.slf4j.Logger;
14 import org.slf4j.LoggerFactory;
15
16 import java.util.Date;
17
18 /**
19 * 这个示例将演示使用Cron触发器的Quartz的所有基本调度功能。
20 *
21 */
22 public class CronTriggerExample {
23 Logger LOG = LoggerFactory.getLogger(CronTriggerExample.class);
24
25 /*
26 * 以下用到的cron总结: "0/20 * * * * ?" 每20秒执行一次
27 */
28 public void run() throws Exception {
29 // 初始化一个调度工厂,并实例化一个调度类
30 SchedulerFactory sf = new StdSchedulerFactory();
31 Scheduler sched = sf.getScheduler();
32
33 JobDetail job = null;
34 CronTrigger trigger = null;
35 Date ft = null;
36
37 // ========================================================
38 // ============ job1 每20秒执行一次,无限期重复
39 // ========================================================
40 job = newJob(SimpleJob.class).withIdentity("job1", "group1").build();
41 trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")).build();
42 ft = sched.scheduleJob(job, trigger);
43 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
44 + trigger.getCronExpression());
45
46 // ========================================================
47 // ============ job2 将每隔2分钟运行一次(每分钟过后15秒)
48 // ========================================================
49 job = newJob(SimpleJob.class).withIdentity("job2", "group1").build();
50 trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build();
51 ft = sched.scheduleJob(job, trigger);
52 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
53 + trigger.getCronExpression());
54
55 // ========================================================
56 // ============ job3 将每隔一分钟运行一次,但只在上午8点到下午5点之间才运行
57 // ========================================================
58 job = newJob(SimpleJob.class).withIdentity("job3", "group1").build();
59 trigger = newTrigger().withIdentity("trigger3", "group1").withSchedule(cronSchedule("0 0/1 8-17 * * ?"))
60 .build();
61 ft = sched.scheduleJob(job, trigger);
62 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
63 + trigger.getCronExpression());
64
65 // ========================================================
66 // ============ job4 每三分钟运行一次,但只在下午5点到11点之间运行
67 // ========================================================
68 job = newJob(SimpleJob.class).withIdentity("job4", "group1").build();
69 trigger = newTrigger().withIdentity("trigger4", "group1").withSchedule(cronSchedule("0 0/3 17-23 * * ?"))
70 .build();
71 ft = sched.scheduleJob(job, trigger);
72 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
73 + trigger.getCronExpression());
74
75 // ========================================================
76 // ============ job5将在每月的第1天和第15天上午10点运行
77 // ========================================================
78 job = newJob(SimpleJob.class).withIdentity("job5", "group1").build();
79 trigger = newTrigger().withIdentity("trigger5", "group1").withSchedule(cronSchedule("0 0 10am 1,15 * ?"))
80 .build();
81 ft = sched.scheduleJob(job, trigger);
82 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
83 + trigger.getCronExpression());
84
85 // ========================================================
86 // ============ job6 将每30秒运行一次,但仅限于工作日(周一至周五)
87 // ========================================================
88 // job 6 will run every 30 seconds but only on Weekdays (Monday through Friday)
89 job = newJob(SimpleJob.class).withIdentity("job6", "group1").build();
90 trigger = newTrigger().withIdentity("trigger6", "group1").withSchedule(cronSchedule("0,30 * * ? * MON-FRI"))
91 .build();
92 ft = sched.scheduleJob(job, trigger);
93 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
94 + trigger.getCronExpression());
95
96 // ========================================================
97 // ============ job7 每30秒运行一次,但只在周末(周六和周日)
98 // ========================================================
99 job = newJob(SimpleJob.class).withIdentity("job7", "group1").build();
100 trigger = newTrigger().withIdentity("trigger7", "group1").withSchedule(cronSchedule("0,30 * * ? * SAT,SUN"))
101 .build();
102 ft = sched.scheduleJob(job, trigger);
103 LOG.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: "
104 + trigger.getCronExpression());
105
106 // ====================================================================
107 // ============ 启动调度器
108 // ====================================================================
109 sched.start();
110
111 try {
112 Thread.sleep(300L * 1000L); // 等待5分钟
113 } catch (Exception e) {
114 }
115
/**
* 终止调度。
* 但是如果当前仍然有任务正在运行中,则会等待该任务执行完毕再终止,期间debug信息会打印:
* 21:48:54.965 [main] DEBUG org.quartz.simpl.SimpleThreadPool - Waiting for thread TestScheduler_Worker-1 to shut down
*/
116 sched.shutdown(true);
117 // 显示调度器的一些统计信息
118 SchedulerMetaData metaData = sched.getMetaData();
119 LOG.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
120 }
121
122 public static void main(String[] args) throws Exception {
123 CronTriggerExample example = new CronTriggerExample();
124 example.run();
125 }
126
127 }
嗨,我想运行一个 cron 作业来在我的服务器上调用 PHP 脚本。 我正在使用 Cpanel 从我的网络主机,这些是选项: 分钟: 小时: 日: 月份: 工作日: 命令: 我真的很难将命令指向我的文
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
有没有办法配置supervisor每 X 秒运行一些命令(如 CRON)? 我看到了 eventlistener 和 TICK_ 事件的例子 [eventlistener:memmon] comman
如果 Cron 有一项作业计划在凌晨 2 点运行,另一项作业在凌晨 3 点运行,那么这些作业会受到夏令时的影响吗? 当时间向后移动一小时时,时间是否会直接从凌晨 2:59:59 变为凌晨 2:00:0
第一个示例 假设我有一份 CRON 工作 30 2 * * * .... 然后每次晚上 2:30(本地时间)都会运行。 现在假设我的时区是欧洲/德国,并且是 2017 年 10 月 29 日(夏令时
我想在不到一分钟的时间内(例如每 30 秒)在主机上运行一个命令,但我无权访问 ssh。我只有 .我不知道如何使用它进行一些黑客攻击以在不到一分钟的时间内运行代码。 EDIT1:在这个问题中,我的访问
我探索并发现在 quartz cron 表达式中: sec min hour day_of_month month day_of_week year, 我们可以提供 day_of_month 或 da
我试图弄清楚是否可以设置一个 cron 作业,将所有文件从我的服务器上的一个文件夹传输到另一个文件夹,然后从另一个文件夹中获取一组文件(随机选择的文件)并将其放入原来的文件夹中。如果有关于如何执行此操
我服务器上的一个驱动器最近损坏了操作系统。我能够恢复所有文件,但现在我有一个只有文件系统的备份驱动器;不可启动。我现在正在设置一个新服务器,并且需要设置旧的 cron 作业。有没有办法查看文件结构以查
我尝试了 http://docs.opscode.com/resource_cron.html#examples 给出的最简单的例子 cron "name_of_cron_entry" do
我注意到很多人在讨论 Gearman,它的调度功能使它能够将工作分配到其他服务器上。但是,我还没有看到与本地 cronjobs 的比较。 cron 和 Gearman 有什么区别? 最佳答案 如果您正
我需要在此运行一份工作 cron日程安排,但似乎我无法在一份声明中表达这一点。有没有办法在一个 cron 中得到这个陈述? 周一至周六上午 8 点 下午 2 点 谢谢。 最佳答案 你是对的。恐怕这是不
我正在尝试在 OVH 网络主机上设置 cron。 要执行的脚本位于: /home/[登录ftp]/www/script.sh 因此,我使用此设置在 OVH 界面上创建了一个 cron: 要执行的命令:
这是cron我试过的表达 0 0 0 */14 * ?它给出了以下时间表 开始时间:- Friday, September 8, 2017 1:25 AM 下一个预定:- 1. Friday, Se
你如何从命令行创建一个 cron 作业,以便它在 gnome-schedule 中显示一个名称? 我知道如何使用 crontab 创建一个 cron 作业。但是,我所有的工作都以空白名称显示。我想更好
我有一个由 cron 安排的工作:每小时从服务器弹出电子邮件。 但有时我不想等待 60 分钟来查看我的电子邮件。为此,我使用了一个脚本,该脚本运行与 crontab 中相同的命令。它本质上就像在计划运
我想要一个每 2 小时 10 分钟运行一次的计划的 cron 表达式,我期望的输出是2:004:106:20我试过 0 0/2 0/2 * * ?为此,输出是这样的2012 年 11 月 1 日星期四
我有一个执行 shell 脚本的 cronjob在我的 shell 脚本中我做了一个模块加载 tww/perl 但它给了我 module: command not found 我能做什么?我至少有 1
在 Jenkins 中,我们将 Poll SCM 计划设置为 * * * * * .但 Jenkins 建议 Do you really mean "every minute" when you sa
在 logrotate 联机帮助页中,他们说: “通常,logrotate 作为日常 cron 作业运行”。 这是否意味着 logrotate 使用 cron(或由 cron 执行)? 如果是这样,这
我是一名优秀的程序员,十分优秀!