隨筆-126  評論-247  文章-5  trackbacks-0

          前言:接觸過 Linux 的朋友對Cron表達式應該不會陌生,在 Linux 操作系統下要寫個自動化腳本就會用到這個表達式。
          Spring 實現
          定時服務計劃任務的時候也需要用到 Quartz 的 Cron表達式 ,因此在做 Spring計劃任務之前,需要掌握一些Cron的知識。

          Quartz官方下載地址:http://quartz-scheduler.org/downloads/catalog?activated=true
          我下載使用的是 2.0.2 版本,本篇文章參考的是官網幫助文檔的 Cron表達式 ,英文在線幫助文檔的,有興趣的可以前往:
          Cron expressionshttp://quartz-scheduler.org/documentation/quartz-2.x/tutorials/crontrigger

          下面是官方對 Cron表達式的說明



          摘要:A cron expression is a string comprised of 6 or 7 fields separated by white space.

          一個 Cron表達式是由6或7個字段(年字段是可選字段)的字符串組成,字段與字段之間用空格來隔開。
          上面的表格已經詳細的列出了每個字段能使用的匹配符和每個字段的有效取值范圍,看一下就很明白了,這里就不再列出。

          Cron表達式使用格式:
          Seconds Minutes Hours DayofMonth Month DayofWeek [Year]
              秒        分        時         天            月         周         [年]

          文檔上對每個符號代表的什么含義都解釋的很清楚了,下面來整理一下

          * :匹配該域的任意值;如*用在分所在的域,表示每分鐘都會觸發事件
          ? :匹配該域的任意值
          - :匹配一個特定的范圍值;如時所在的域的值是10-12,表示10、11、12點的時候會觸發事件
          , :匹配多個指定的值;如周所在的域的值是2,4,6,表示在周一、周三、周五就會觸發事件(1表示周日,2表示周一,3表示周二,以此類推,7表示周六)
          / :左邊是開始觸發時間,右邊是每隔固定時間觸發一次事件,如秒所在的域的值是5/15,表示5秒、20秒、35秒、50秒的時候都觸發一次事件
          L :last,最后的意思,如果是用在天這個域,表示月的最后一天,如果是用在周所在的域,如6L,表示某個月最后一個周五
          W:weekday,工作日的意思。如天所在的域的值是15W,表示本月15日最近的工作日,如果15日是周六,觸發器將觸發上14日周五。如果15日是周日,
                 觸發器將觸發16日周一。如果15日不是周六或周日,而是周一至周五的某一個,那么它就在15日當天觸發事件
          #:用來指定每個月的第幾個星期幾,如6#3表示某個月的第三個星期五

          官方文檔給出的例子及解釋:

          "0 0 12 * * ?"              每天12:00觸發事件
          "0 15 10 ? * *"           每天10:15觸發事件
          "0 15 10 * * ?"            每天10:15觸發事件
          "0 15 10 * * ? *"         每天10:15觸發事件
          "0 15 10 * * ? 2005"     2005年的每天10:15觸發事件
          "0 * 14 * * ?"             每天14點開始觸發,每分鐘觸發一次,14:59分結束
          "0 0/5 14 * * ?"          每天14點開始觸發到14:59分結束的每5分鐘觸發一次事件
            "0 0/5 14,18 * * ?"      每天14點開始到14:59期間和18點到18:59期間的每5分鐘觸發一次事件
            "0 0-5 14 * * ?"          每天14點到14:05期間的每1分鐘觸發一次事件
            "0 10,44 14 ? 3 WED"   每年3月的星期三的14:10和14:44觸發一次事件 
            "0 15 10 ? * MON-FRI"  周一至周五的10:15觸發一次事件
            "0 15 10 15 * ?"          每月15日10:15觸發一次事件
            "0 15 10 L * ?"            每月最后一日的10:15觸發一次事件 
            "0 15 10 ? * 6L"          每月的最后一個星期五10:15觸發一次事件
            "0 15 10 ? * 6L 2002-2005"   2002年至2005年的每月的最后一個星期五10:15觸發一次事件
            "0 15 10 ? * 6#3"                每月的第三個星期五10:15觸發一次事件 



            
          posted on 2012-06-12 23:16 fancydeepin 閱讀(3898) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 赣州市| 威信县| 肇东市| 黄浦区| 航空| 长沙市| 利川市| 延川县| 宜兰市| 桐城市| 潮州市| 禄丰县| 台中市| 习水县| 陆良县| 兰考县| 安庆市| 抚宁县| 武乡县| 儋州市| 电白县| 蚌埠市| 葫芦岛市| 游戏| 龙陵县| 淮安市| 西贡区| 平原县| 贡山| 闽侯县| 拉萨市| 股票| 涡阳县| 临澧县| 景泰县| 盐城市| 丰县| 四子王旗| 莆田市| 乳山市| 绥化市|