当前位置: 首页 > 知识库问答 >
问题:

每天设置一次CronTrigger quartz作业对linux服务器不起作用

樊飞飙
2023-03-14

石英依赖Maven

<dependency>
    <groupId>quartz</groupId>
    <artifactId>quartz</artifactId>
    <version>1.5.2</version>
</dependency>

**使用这个版本是因为服务器运行Java1.4。quartz的最新版本在运行app**时产生了错误

我尝试在周一到周五的凌晨1点运行一次cron表达式。(0 0 1?*周一至周五)

package com.everis.centers;

import java.util.TimeZone;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

import com.everis.centers.job.ExecuteJob;

public class ExportsApplication {

    private static final String PERIOD = "0 0 1 ? * MON-FRI";
    private static final String PERIOD_2 = "0 0 0 ? * * *";

    public static void main(String[] args) {

        try {

            SchedulerFactory sf = new StdSchedulerFactory();
            Scheduler scheduler = sf.getScheduler();

            JobDetail job = new JobDetail("exportJob", "vj1", ExecuteJob.class);
            CronTrigger ct = new CronTrigger("exportTrigger", "vt1", PERIOD);
            ct.setTimeZone(TimeZone.getTimeZone("America/Sao_Paulo"));

            scheduler.scheduleJob(job, ct);
            scheduler.start();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

OBS

我意识到,当达到执行时间时,它将在循环中执行。也就是说,如果我设置为从凌晨1点开始运行,它将在循环中执行。而不是跑一次,等第二天。

共有1个答案

万俟震博
2023-03-14

从这里,您可以理解Cron表达式中每个值的意义。如果您需要每天12am运行作业,请尝试使用以下表达式0 0 0****。这将每00:00小时每天运行一次作业。如果您想了解使用的重要性,可以在这里参考以下答案

如果你有任何问题请告诉我。

您可以尝试使用UNIX风格的cron(不支持秒)的Crontab。如果还需要指定秒数,可以引用这个。

 类似资料:
  • 我使用FFMPEG创建视频缩略图, 我已经下载了FFMPEG(FFMPEG-2.4.2.tar.bz2)并安装在服务器上。 位于 /usr/bin/ffmpeg 并在以下代码中使用: 但是这个命令没有像我预期的那样工作... 问题是我们上传视频时未创建视频缩略图。 任何帮助很大的赞赏

  • 如何在生产环境中将hazelcast服务器作为linux服务运行? java-server-cp hazelcast。jar com。黑兹卡斯特。例子。StartServer StartServer运行带有输出到std终端的服务器,将其作为linux服务运行并将日志写入文件的最简单方法是什么 我必须将其设置为EC2实例中的服务并将其捆绑。当EC2自动缩放启动实例时,hazelcast服务器将启动并

  • 如果我创建 cronjob 以每 2:30 运行一次命令会运行吗?(这意味着,我的 cron 将在每小时 90 分钟后运行一次。 命令如:30*/2***/command/xxx= 请帮帮忙?

  • 问题内容: 我每天如何每六个小时运行一次命令?试过这不起作用: 问题答案: 您忘记了,并且您有太多字段,这是您需要关心的时刻 这意味着每6小时从0开始,即在0、6、12和18小时,您可以将其写为

  • 我使用这段代码通过JAVA运行简单的TCP服务器,并使用Socket协议android应用程序作为客户端。问题是,当客户端连接时,我会发送消息,服务器端什么都不做,直到我断开客户端的连接,之后会出现消息。我认为在while((inputLine=in.readLine())!=空)

  • 我们知道,使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上,那么这么做有什么意义吗? 假设我需要管理几十台服务器,那么我每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看日志非常烦琐,我可以把几十台服务器的日志集中到一台日志服务器上吗?这样我每天只要登录这台日志服务器,就可以查看所有服务器的日志,要方便得多。 如何实现日志服务器的功能呢?其实并不难,不