Cron 定時任務

2021-08-23 14:03:03 字數 3013 閱讀 8903

一般系統都會有定時任務存在,比如訂單系統,會根據定時任務來實時同步訂單狀態,同步交易狀態等等。定時任務可以使用quartz 定時任務,也可以自己寫乙個任務排程系統,只要能實現功能就可以。

下面我簡單介紹一下quartz 定時任務配置,需要配置三個bean,分別為:quartz,trigger,scheduler:

quartz:配置目標bean和方法

trigger:觸發器,配置quartz和cron表示式,指定觸發時機

scheduler:將觸發器配置到任務排程中

false

1

cron表示式格式:

seconds | minutes | hours | dayofmonth | month | dayofweek | year

年份可為空

cron表示式特殊字元

特殊字元含義*

所有值;每秒、每分鐘、每小時執行等等

,指定值;指定哪些確定的時間點執行

-範圍值;符號兩邊各有乙個值,表示在這兩個值之間的時間段執行

/起始值,遞增值;符號左邊是起始值,右邊是遞增值,表示指定其實時間點和其後每遞增後的時間點執行

?忽略值;使用它即不考慮這個字段

l最後值;每月的最後一天,每週的最後一天

w工作日;指定天的最近的工作日

#只能用在dayofweek欄位,符號左邊表示週幾,右邊表示第幾周,表示第幾周的週幾

cron表示式字段允許值

字段範圍

seconds

0-59

minutes

0-59

hours

0-23

dayofmonth

1-31

month

1-12/jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec

dayofweek

1-7/sun, mon, tue, wed, thu, fri, sat(1代表週日,其他順延)

year

1970-2099/不寫

cron表示式字段允許特殊字元

字段特殊字元

seconds

* , - /

minutes

* , - /

hours

* , - /

dayofmonth

* , - / l w ?

month

* , - /

dayofweek

* , - / l # ?

year

* , - /

cron表示式舉例

*/10 * * * * ? 每隔10秒執行一次 

0 */1 * * * ? 每隔1分鐘執行一次 

0 0 5-10 * * ? 每天5-10點整點觸發 

0 0/30 * * * ? 每半小時觸發一次 

0 0-5 14 * * ? 在每天下午2:01,2:02,2:03,2:04,2:05觸發 

0 0/5 15 * * ? 在每天下午3點到下午3:55期間的每5分鐘觸發 

0 0/5 14,16 * * ? 在每天下午2點到2:55期間和下午4點到4:55期間的每5分鐘觸發 

0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時 

0 0 10,14,16 * * ? 每天上午10點,下午2點,4點

0 0 12 ? * wed 表示每個星期三中午12點 

0 0 17 ? * tues,thur,sat 每週

二、四、六下午五點 

0 10,33 14 ? 3 wed 每年三月的星期三的下午2:10和2:33觸發 

0 15 10 ? * mon-fri 周一至周五的上午10:15觸發 

0 0 22 l * ? 每月最後一天22點執行一次 

0 15 10 l * ? 每月最後一日的上午10:15觸發 

0 15 10 ? * 6l 每月的最後乙個星期五上午10:15觸發 

0 15 10 * * ? 2020 2023年的每天上午10:15觸發 

0 15 10 ? * 6l 2020-2025 2023年至2023年的每月的最後乙個星期五上午10:15觸發 

0 15 10 ? * 6#3 每月的第三個星期五上午10:15觸發

「30 * * * * ?」 每半分鐘觸發任務 

「30 10 * * * ?」 每小時的10分30秒觸發任務 

「30 10 1 * * ?」 每天1點10分30秒觸發任務 

「30 10 1 20 * ?」 每月20號1點10分30秒觸發任務 

「30 10 1 20 10 ? *」 每年10月20號1點10分30秒觸發任務 

「30 10 1 20 10 ? 2011」 2023年10月20號1點10分30秒觸發任務 

「30 10 1 ? 10 * 2011」 2023年10月每天1點10分30秒觸發任務 

「30 10 1 ? 10 sun 2011」 2023年10月每週日1點10分30秒觸發任務 

「15,30,45 * * * * ?」 每15秒,30秒,45秒時觸發任務 

「15-45 * * * * ?」 15到45秒內,每秒都觸發任務 

「15/5 * * * * ?」 每分鐘的每15秒開始觸發,每隔5秒觸發一次 

「15-30/5 * * * * ?」 每分鐘的15秒到30秒之間開始觸發,每隔5秒觸發一次 

「0 0/3 * * * ?」 每小時的第0分0秒開始,每三分鐘觸發一次 

「0 15 10 ? * mon-fri」 星期一到星期五的10點15分0秒觸發任務 

「0 15 10 l * ?」 每個月最後一天的10點15分0秒觸發任務 

「0 15 10 lw * ?」 每個月最後乙個工作日的10點15分0秒觸發任務 

「0 15 10 ? * 5l」 每個月最後乙個星期四的10點15分0秒觸發任務 

「0 15 10 ? * 5#3」 每個月第三週的星期四的10點15分0秒觸發任務

Cron定時任務

完整的是七位 秒 分鐘 小時 日 月 星期 年 有的沒有這個年 0 0 12 每天中午12點觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 每天上午10 15觸發 0 15 10 2005 2005年的每天上午10 15觸發 0 14 在每天下午...

Cron定時任務

cron cron表示式是乙個字串,字串以5或6個空格隔開,分為6或7個域,每乙個域代表乙個含義,cron有如下兩種語法格式 seconds minutes hours dayofmonth month dayofweek year或 seconds minutes hours dayofmonth...

centos定時任務cron

任務指令行包括五個時間日期域,接著乙個使用者域 如果是系統級的任務檔案 其餘的被當做是此任務的命令列。下圖顯示系統級任務檔案中的指令行的格式 例如 1 root usr local nginx logs nginx log.sh 每分鐘執行一次 usr local nginx logs nginx ...