我希望在一定的开始时间后每小时运行一次cron作业。目前我的cron作业表达是
cronExpression = seconds + " " + minutes + " " + hours +"/1" + " " + " * * ? *" ;
(用户选择传入秒,分钟,小时)
工作在合适的时间开始,每小时一直运行到午夜,然后停止到第二天的小时,然后重新开始。如何让工作连续运行而不是在午夜停止?
我知道我可以将表达式更改为
cronExpression = seconds + " " + minutes + " " * * * ? *" ;
但是它不会考虑开始时间。它会在每小时运行。
提前致谢, 富
答案 0 :(得分:3)
你的意思是你想让这份工作在给定时间开始,然后每小时运行一次吗?如果是这样,我认为cron表达式不是正确的方法。
如果您正在使用调度程序,则应该可以直接启动作业并以给定间隔永久运行。例如,这是来自JobBuilder的Quartz调度程序文档的片段:
JobDetail job = newJob(MyJob.class)
.withIdentity("myJob")
.build();
Trigger trigger = newTrigger()
.withIdentity(triggerKey("myTrigger", "myTriggerGroup"))
.withSchedule(simpleSchedule()
.withIntervalInHours(1)
.repeatForever())
.startAt(futureDate(10, MINUTES))
.build();
scheduler.scheduleJob(job, trigger);
答案 1 :(得分:0)
如果当前时间在您的开始时间之后,每小时运行一个包装器来运行您的工作。
例如,
case $(date +%H) in
09 |1[0-6] ) pingcheck ;;
esac
将在09:00和16:59之间运行pingcheck
(无论是什么:-)。
答案 2 :(得分:0)
使用您自己的表达
cronExpression =秒+“”+分钟+“”* * *? *“;
使用startAt(您的开始时间)方法()提及触发器的开始时间。当触发器开始生效时,这个开始时间将隐含地告诉石英。