如何编写cron表达式以每6个月晚上16点触发一个函数?
我刚刚提供了一种方法让我的用户停止他们的Cron任务.cron设置为每5分钟运行一次以确保其启动和运行但是我希望能够在用户单击重启按钮时手动启动cron作业.
有没有办法强迫cron开始等待下一个5分钟的周期?
我在CentOS上使用PHP.
我在我的java程序中使用Quartz Cron触发器.我使用的Cron表达式是0 0***?
现在我想要一个调度程序每小时执行一次.为了测试相同的启动我的jboss服务器,然后我将我的窗口时间重置为5:59:45和6:00:00,调度程序没有激活.
现在,下次我第一次调整时间说5:55:00然后我启动服务器并且调度程序在6:00:00解雇.
服务器或调度程序是否在内部保持时间,当然最初是用系统时序初始化的?
我有一个有多个工作的调度程序.我希望能够显示调度程序中的所有活动作业,我的意思是我想在每个作业被触发时显示.这是我的代码:
sched.start();
JobDetail job = newJob(Jobs.class)
.withIdentity(job_name_, "default")
.usingJobData("job_type", job_type_)
.build();
Trigger trigger = newTrigger()
.withIdentity(job_name_, "default")
.startNow()
.withSchedule(cronSchedule(date_time_))
.build();
sched.scheduleJob(job, trigger);
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?如何从作业的触发器中获取cron表达式?还有一种方法可以将cron表达式视为日期或表达本身更详细的东西吗?
任何帮助将被批准,
提前致谢.
我正在观察一个奇怪的行为,该行为使用包含年份值的CronTrigger在Quartz中安排作业。
这是我创建触发器并使用它计划作业的方式:
CronTrigger trigger = cronJobTriggerFactory.getObject();
trigger.setName(triggerName);
trigger.setGroup(triggerGroupName);
trigger.setCronExpression(cronSchedule);
trigger.setVolatility(false);
JobDetail job = schedulableJobFactory.getObject();
job.setName(jobName);
job.setGroup(jobGroupName);
job.setVolatility(false);
job.setDurability(true);
Date scheduleTime1 = scheduler.scheduleJob(job, trigger);
logger.info(job.getKey() + " will run at: " + scheduleTime1);
Run Code Online (Sandbox Code Playgroud)
然后在我的单元测试中,确定“现在”日期,向其添加5分钟,计算该日期/时间的cron表达式,并使用此计划将我的主班计划称为作业。这是显示通过了哪个cron表达式的单元测试的输出:
NotificationSchedulerTest - Today is: 9 May 2012 05:32 PM
NotificationSchedulerTest - 5 min later is: 9 May 2012 05:37 PM
NotificationSchedulerTest - cron schedule is: 0 37 17 * 4 ? 2012
Run Code Online (Sandbox Code Playgroud)
但是,当尝试使用此cron表达式计划作业时,出现以下错误:
org.quartz.SchedulerException: Based on configured schedule, the given trigger will never fire.
Run Code Online (Sandbox Code Playgroud)
如您所见,该日期是相对于我运行测试的日期/时间而言的将来...因此,尝试安排作业在过去的某个时间运行应该不是问题。
现在,下一个奇怪的事情是:请注意,我确实在cron表达式中指定了年份值:“ 0 …
好的,我已经仔细阅读了所有可以找到的内容,但没有找到解决问题的答案。几个项目接近但不够接近。我有一个在Tomcat 7中运行的基于Spring 3.0.7的Web应用程序。在applicationContext.xml中,我具有:
<task:scheduler id="scheduledReportsScheduler" pool-size="1"/>
<task:scheduled-tasks scheduler="scheduledReportsScheduler">
<task:scheduled ref="scheduledReportsQueuer" method="process" cron="0 */1 * * * *"/>
</task:scheduled-tasks>
<bean id="scheduledReportsQueuer" class="com.foo.scheduledServices.ScheduledReportsQueuerService"></bean>
Run Code Online (Sandbox Code Playgroud)
这每分钟执行一次ScheduledReportsQueuerService类。很好 然后在该类内部,检查一些数据库表,并尝试基于CronTrigger计划任务(如果尚未计划):
if(!_workers.containsKey(schedule.getRptScheduleId())){
_logger.debug(Thread.currentThread().getName() + " Creating and scheduling ScheduledReportQueuerWorker for scheduled report ID: "+schedule.getRptScheduleId()+"("+schedule.getReportName()+") "+schedule.getCronPattern());
ScheduledReportQueuerWorker newWorker = new ScheduledReportQueuerWorker(schedule);
newWorker.setRptRequestDAO(getRptRequestDao());
newWorker.setRptScheduleDAO(getRptScheduleDao());
_workers.put(schedule.getRptScheduleId(), newWorker);
ScheduledFuture<?> newFuture = _scheduler.schedule(newWorker, new CronTrigger(schedule.getCronPattern()));
_futures.put(schedule.getRptScheduleId(), newFuture);
}
private ConcurrentTaskScheduler _scheduler;
Run Code Online (Sandbox Code Playgroud)
随着新任务(上述newWorker)的执行,这似乎也起作用。问题是它们在正确的触发时间被执行多次。例如,如果新任务的cron模式为'* * / 2 * * * *',则应每2分钟执行一次。相反,正在执行的任务是每2分钟连续执行50-60次任务。
这让我发疯,您能提供的任何帮助都将是巨大的。
更多信息这是一些日志输出,您可以看到基于XML的线程开始使用,它告诉我们我们正在为每两分钟运行一次报告创建一个线程。然后您会看到该报告每两分钟连续运行60次。
// here it schedules a single report to be run every 2 …Run Code Online (Sandbox Code Playgroud) 我有一个从 Presto 获取数据并执行一些 ETL 并将 CSV 文件推回到 s3 存储桶的流程。我的流程如下:
**QueryDatabaseTable -> convertRecord -> RouteText -> puts3Object**
Run Code Online (Sandbox Code Playgroud)
我知道我们可以通过 cron 作业调度功能来实现这一点。这个想法是每天早上在 s3 存储桶中摄取新文件。
cron 语法是什么?我试过了0 0 3 1/1 * ? *,但似乎不是每天凌晨 3 点运行。有什么理由吗?
我怎样才能实现这个目标?
提前致谢!
有没有可以用来将 cron 表达式转换为时间间隔的 java 库?可以是秒、毫秒、分钟等......
Cron Expression (Input): 0/15 * * * * ?
Output1: 15 (getInSeconds)
Output2: 15000 (getInMilliSeconds)
Run Code Online (Sandbox Code Playgroud) crontrigger ×8
cron ×3
java ×3
spring ×2
apache-nifi ×1
cron-task ×1
minify ×1
php ×1
schedule ×1
scheduler ×1
spring-mvc ×1