1

特定の開始時刻の後、1 時間ごとに cron ジョブを実行したいと考えています。現在、私のcronジョブ式は

cronExpression = seconds + " " + minutes +  " " +   hours +"/1" + " " + " * * ? *" ;

(秒、分、時間はユーザーの選択によって渡されます)

ジョブは適切な時刻に開始され、深夜まで 1 時間ごとに実行されますが、翌日の正時まで停止してから再開されます。ジョブを継続的に実行し、真夜中に停止しないようにするにはどうすればよいですか?

表現を次のように変更できることを理解しています

cronExpression = seconds + " " + minutes +  " " * * * ? *" ;

ただし、開始時刻は考慮されません。毎時間実行されます。

前もってありがとう、リッチ

4

3 に答える 3

3

指定された時刻にジョブを開始し、1 時間ごとに 1 回実行することを意味しますか? もしそうなら、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);
于 2013-05-22T01:46:10.333 に答える
0

現在の時刻が開始時刻より後の場合にジョブを実行するラッパーを毎時間実行します。

例えば、

case $(date +%H) in 
    09 |1[0-6] ) pingcheck ;;
esac

09:00 から 16:59 の間に実行されますpingcheck(それが何であれ :-)。

于 2013-05-22T13:29:53.397 に答える