Schedule cron jobs in GO

chrishan·2020년 11월 8일
0
post-thumbnail

Installation

go get github.com/robfig/cron

Usage

import (
	"github.com/robfig/cron"
)

func main() {
    c := cron.New()
    
    // Every hour on the half hour
    _ = c.AddFunc("* 30 * * * *", func() { })
    
    // .. in the range 1-3am, 5-7am
    _ = c.AddFunc("* 30 1-3, 5-7 * * *", func() {})
    
    // Every Monday and Thursday
    _ = c.AddFunc("* * * * * MON,THU", func() {})
    
    // Every hour, starting an hour from now
    _ = c.AddFunc("@hourly", func() {})
    
    // Every hour thirty, starting an hour thirty from now
    _ = c.AddFunc("@every 1h30m", func() {})
    
    c.Start()
}

CRON Expression Format

Field nameMandatory?Allowed valuesAllowed special characters
SecondsYes0-59* / , -
MinutesYes0-59* / , -
HoursYes0-23* / , -
Day of monthYes1-31* / , - ?
MonthYes1-12 or JAN-DEC* / , -
Day of weekYes0-6 or SUN-SAT* / , - ?

Special Characters

Asterisk (*)

ex) [* * * * *]
별표(*)는 필드이 모든 값과 일치. 예를 들면, 첫 번째 필드 (분)에 별표를 사용하면 매분 실행된다.

Slash (/)

ex) [3-50/5 * * * *]
슬래시(/)는 범위의 증분을 표현하는데 사용. 예를 들면, 첫 번째 필드에 (3-50)/5으로 설정하면 3분에서 50분사이에 5분에 한번 실행. (min-max/term)

Comma (,)

ex) [1,5,30 * * * *]
쉽표(,)는 필드의 값을 복수로 설정할 때 사용. 예를 들면, 첫 번째 필드에 (1, 5, 30)으로 설정하면 각 1, 5, 30분에 실행된다.

Hyphen (-)

ex) [1-30 * * * *]
하이픈(-)은 범위를 설정하는데 사용. 예를 들면, 첫 번째 필드에 (1-30)으로 설정하면 매 시간 1~30분까지 매분 실행된다.

Predefined schedules

EntryDescriptionEquivalent To
@yearly (or @annually)Run once a year, midnight, Jan. 1st0 0 1 1 *
@monthlyRun once a month, midnight, first of month0 0 1 * *
@weeklyRun once a week, midnight between Sat/Sun0 0 * * 0
@daily (or @midnight)Run once a day, midnight0 0 * * *
@hourlyRun once an hour, beginning of hour0 * * * *

Intervals

@every <duration>

ex) @every 0h3m6s == @every (60 * 60 * 0 + 60 * 3 + 6)s

0개의 댓글