본문 바로가기
Development/리눅스

crontab 사용법 알아보기 (크론탭, 옵션, 스케쥴러 예제, 샘플)

by 버들도령 2024. 2. 21.
728x90

Crontab & Job Schedule

crontab 사용법 알아보기 (크론탭, 옵션, 스케쥴러  예제, 샘플)

cron
Developers AT&T Bell Laboratories
발표일 1975년 5월
프로그래밍 언어 C
플랫폼 리눅스, macOS, FreeBSD
타입 Job scheduler

 

cron 작업이란?

Cron 은 사용자가 특정 시간에 반복적으로 작업을 예약하는 명령을 입력할 수 있는 유틸리티 프로그램입니다. cron에서 예약된 작업을 cron 작업 이라고 합니다. 사용자는 자동화할 작업의 종류와 실행 시기를 결정할 수 있습니다.

Cron은 비대화형 작업을 실행하는 백그라운드 프로세스 인 데몬입니다. Windows에서는 cron 데몬과 유사하게 작동하는 서비스 와 같은 백그라운드 프로세스에 익숙할 것 입니다.

cron 파일은 특정 시간에 주기적으로 실행되는 명령이 포함된 간단한 텍스트 파일입니다. 기본 시스템 cron 테이블 또는 crontab 구성 파일은 /etc/crontab 입니다.

시스템 관리자만 시스템 crontab 파일을 편집할 수 있습니다. 그러나 유닉스 계열 운영 체제는 여러 관리자를 지원합니다. 각각은 crontab 파일을 만들고 원할 때마다 작업을 수행하는 명령을 작성할 수 있습니다.

cron 작업을 통해 사용자는 시스템 유지 관리, 디스크 공간 모니터링 및 예약 백업을 자동화할 수 있습니다. 크론 작업은 특성상 서버와 같이 연중무휴로 작동하는 컴퓨터에 적합합니다.

크론 작업은 주로 시스템 관리자가 사용하지만 웹 개발자에게도 도움이 될 수 있습니다.

예를 들어, 웹 사이트 관리자는 매일 자정에 사이트를 자동으로 백업하도록 하나의 크론 작업을 설정하고, 매주 월요일 자정에 끊어진 링크를 확인하도록 또 다른 크론 작업을 설정하고, 매주 금요일 정오에 사이트 캐시를 지우도록 세 번째 작업을 설정할 수 있습니다.

그러나 다른 프로그램과 마찬가지로 cron에는 사용하기 전에 고려해야 할 제한 사항이 있습니다.

  • 작업 간의 최단 간격은 60초 입니다. cron을 사용하면 59초 이하마다 작업을 반복할 수 없습니다.
  • 한 대의 컴퓨터에 집중. Cron 작업은 네트워크의 여러 컴퓨터에 배포할 수 없습니다. 따라서 cron을 실행하는 컴퓨터가 충돌하면 예약된 작업이 실행되지 않고 누락된 작업은 수동으로만 실행할 수 있습니다.
  • 자동 재시도 메커니즘이 없습니다. Cron은 엄격하게 지정된 시간에 실행되도록 설계되었습니다. 작업이 실패하면 다음 예약 시간까지 다시 실행되지 않습니다. 이로 인해 cron은 증분 작업에 적합하지 않습니다.

이러한 제한 사항으로 인해 cron은 최소 60초의 정기적인 간격으로 특정 시간에 실행되는 간단한 작업에 탁월한 솔루션입니다.

 

crontab 사용법 (option, 옵션)
usage:  crontab [-u user] file
        crontab [-u user] [ -e | -l | -r ] [-i] [-s]
                (default operation is replace, per 1003.2)
        -e      (edit user's crontab)
        -l      (list user's crontab)
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)
        -s      (selinux context)

 

crontab Usage

순서대로 나열하여 적어보면...
*          *           *                *           *             CommandToExecute
mins(0~59) hours(0~23) dayOfMonth(1~31) month(1~12) weekday(0~6)) CommandToExecute


# *    *    *    *    *  command to execute
# ┬    ┬    ┬    ┬    ┬
# │    │    │    │    │
# │    │    │    │    │
# │    │    │    │    └───── day of week (0 - 6) (0 to 6 are Sunday to Saturday)
# │    │    │    └────────── month (1 - 12)
# │    │    └─────────────── day of month (1 - 31)
# │    └──────────────────── hour (0 - 23)
# └───────────────────────── min (0 - 59)

 

필드 허용되는 값
분 (minute) 0 ~ 59
시간 (hour) 0 ~ 23
일 (day of month) 1 ~ 31
월 (month) 1 ~ 12 또는 JAN ~ DEC
(or names, see below)
요일 (day of week) 0 ~ 7 또는 SUN ~ SAT
(Sunday ~ Saturday. 0 또는 7은 Sunday. 대소문자 구분 안함)
명령어 쉘 명령어

 

Fields & Allowed Values
Name Required Allowed Values Allowed Special Characters
Minutes Y 0-59 , - * /
Hours Y 0-23 , - * /
Day of month Y 1-31 , - * ? / L W C
Month Y 1-12 or JAN-DEC , - * /
Day of week Y 0-6 or SUN-SAT
(7. Sunday (non-standard))
, - * ? / L C #
Year N empty or 1970-2099 , - * /

 

요일 (Day of week)
요일 (Day of week)
0 Sunday Sun
1 Monday Mon
2 Tuesday Tue
3 Wednesday Wed
4 Thursday Thu
5 Friday Fri
6 Saturday Sat
7 Sunday Sun

 

months of the year
  Months Abbreviation
1 January Jan
2 February Feb
3 March Mar
4 April Apr
5 May May
6 June Jun
7 July Jul
8 August Aug
9 September Sep
10 October Oct
11 November Nov
12 December Dec

 

Crontab 옵션 (crontab options)
Option Description
file 지정된 파일에서 crontab 데이터를 로드합니다. 파일 이 대시(" - ")이면 표준 입력 에서 crontab 데이터를 읽습니다.
-u user crontab을 보거나 수정할 사용자를 지정합니다. 이 옵션이 제공되지 않으면 crontab 은 crontab을 실행한 사용자의 crontab을 엽니다. 참고: su를 사용하여 사용자를 전환하면 crontab이 혼동될 수 있으므로 su 내부에서 실행하는 경우 모호성을 피하기 위해 항상 -u 옵션을 사용하십시오.
-l 현재 crontab의 내용을 표시(목록)합니다.
-r 현재 crontab을 제거합니다. 따라서 모든 crontab 작업의 일정을 취소합니다.
-e VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용하여 현재 crontab을 편집합니다.
-i -r 과 동일하지만 crontab을 제거하기 전에 사용자에게 예/아니오 확인 프롬프트를 제공합니다.
-s SELinux만 해당: 편집 또는 교체가 발생하기 전에 현재 SELinux 보안 컨텍스트 문자열을 MLS_LEVEL 설정으로 crontab 파일에 추가합니다. 자세한 내용은 SELinux 설명서를 참조하십시오.

 

cron 연산자 (Operator)

crontab의 구문은 연산자도 사용합니다. 연산자는 cron 필드에 제공된 값에 대해 작업을 수행하는 특수 문자입니다.

Operator Description
* (별표, asterisk) 모든 값을 나타냅니다. 이 연산자를 사용하면 해당 옵션의 모든 달 또는 모든 요일, 모든 시간...을 나타내어 작업을 계속 실행합니다.
, (쉼표, comma) 별도의 개별 값을 지정할 수 있습니다. ex) 3,7,9
예를 들어 요일 필드의 "MON,WED,FRI"는 "월요일, 수요일, 금요일"을 의미합니다.
- (대시, dash) 값의 범위를 나타냅니다. ex) 4-7 (▶ 4,5,6,7 과 같은 표현)
/ (슬래시, forward-slash) 값을 단계로 나누는데 사용합니다. ex) */2, */3, */5 
증분을 지정할때에도 사용됩니다. 예를 들어 초 필드의 "0/15"는 "초 0, 15, 30 및 45"를 의미합니다.
초 필드의 "5/15"는 "5, 20, 35, 50초"를 의미합니다.
'*' 문자 뒤에 '/'를 지정할 수도 있습니다. 이 경우 '*'는 '/' 앞에 '0'이 있는 것과 같습니다.
# (해시, hash) 요일 (day of week)과 1 ~ 5 사이의 숫자로 표현합니다. ex) 1#2 (▶ 해당 월의 두번째 월요일)

이 문자는 월의 "n번째" XXX일을 지정하는 데 사용되며 요일 (day of week) 필드에만 허용됩니다.
예를 들어 요일 필드의 "6#3" 값은 해당 월의 세 번째 금요일을 의미합니다(6일 = 금요일 및 "#3" = 해당 월의 세 번째 금요일).
다른 예: "2#1" = 매월 첫 번째 월요일
"4#5" = 매월 다섯 번째 수요일.
"#5"를 지정하고 해당 월에 지정된 요일이 5개가 아닌 경우 해당 월에 실행이 발생하지 않습니다.
? (물음표, Question mark) 날짜(day of the month)와 요일(day of the week) 필드에 특정값 없음을 의미합니다.
C (Calendar) 이 문자는 "calendar"의 줄임말이며 날짜 및 요일 필드에만 허용됩니다. 이는 연결된 달력(있는 경우)에 대해 값이 계산됨을 의미합니다.
달력이 연결되어 있지 않으면 모든 항목이 포함된 달력이 있는 것과 같습니다.
날짜 필드의 값 "5C"는 "5일 이후 달력에 포함된 첫 번째 날"을 의미합니다.
요일 필드의 값 "1C"는 "일요일 이후 달력에 포함된 첫 번째 요일"을 의미합니다.
L (Last) 날짜와 요일 필드에 사용할 수 있으며, 예를 들어서 4L을 요일 필드에 사용하면 해당 월의 마지막 목요일을 의미합니다.
W (Weekday,
a day of the week other than Saturday or Sunday.)
이 연산자를 사용하여 주어진 시간에서 가장 가까운 평일의 요일을 결정합니다.
예를 들어, 매월 1일이 토요일인 경우 날짜 필드에 1W를 쓰면 다음의 가장 가까운 평일인 월요일(3일)에 명령이 실행됩니다.

 

crontab Directory

crontab 외에도 root 사용자는 /etc/cron.d 디렉토리에 cron 작업을 추가할 수도 있습니다. 자동 설치 및 업데이트를 위한 스크립트 실행에 가장 적합합니다.
이 디렉토리에 cron 작업을 추가하는 사용자는 루트 액세스 권한이 있어야 하며 명명 규칙을 준수해야 합니다.
또는 루트 사용자가 스크립트를 다음 디렉토리로 이동하여 실행을 예약할 수 있습니다.

Directory Description
/etc/cron.hourly/ 한 시간에 한 번씩 모든 스크립트 실행
/etc/cron.daily/ 하루에 한 번 실행합니다.
/etc/cron.weekly/ 일주일에 한 번 실행합니다.
/etc/cron.monthly/ 한 달에 한 번 실행합니다.

 

크론탭(crontab) 실행결과 이메일 비활성화

기본적으로 cron 작업은 cronjob을 실행하는 사용자 계정에 이메일을 보냅니다. 이것이 필요하지 않은 경우 cron 작업 행 끝에 다음 명령을 입력하십시오.

크론탭을 실행했을때 사용자 계정으로 이메일을 보내지만,
아래의 코드를 끝에 추가하면 이메일을 보내지 않고 휴지통에 버리고 말겠지요.

> /dev/null 2>&1

# /dev/null ▶▶▶ 휴지통
# 2         ▶▶▶ 표준에러
# >         ▶▶▶ 리다이렉트
# &1        ▶▶▶ 표준출력상태

사용 예)
30 08 * * * /home/invusomuch/daily_system_check.sh > /dev/null 2>&1

 

크론탭(crontab) 실행결과 파일 저장
위에서는 이메일 비활성화하는 방법을 알아봤어요.
30 08 * * * /home/invusomuch/daily_system_check.sh > /dev/null 2>&1

그렇다면, 크론탭의 실행 결과를 확인해보고 싶으시다면
/dev/null 위치에 /home/invusomuch/logs/cronError.log 와 같이 파일명을 적어주시면 됩니다.
그러면, cronError.log 파일에 크론탭의 실행 결과와 관련한 내용들이 기록되겠죠.

30 08 * * * /home/invusomuch/daily_system_check.sh > /home/invusomuch/logs/cronError.log 2>&1

 

OS별 crontab 파일 위치

사용자의 crontab 파일은 다른 Unix 및 linux 특징의 다른 위치에 로그인 이름으로 저장됩니다. 이러한 파일은 백업, 보기 및 복원에 유용하지만 사용자가 crontab 명령으로만 편집해야 합니다.

OS Directory
mac OS X /usr/lib/cron/tabs/
BSD Unix /var/cron/tabs/
Solaris (솔라리스)
HP-UX
Debian (데비안)
Ubuntu (우분투)
/var/spool/cron/crontabs/
AIX
Red Hat Linux (레드햇 리눅스)
CentOS
Ferdora (페도라)
/var/spool/cron/

 

crontab 명령어 옵션의 사용예
VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용하여 현재 crontab을 편집합니다.

$ crontab -e

위의 명령어를 실행하면 다음과 같이 기존의 설정된 crontab 내용이 보여지거나,
기존에 등록된 스케쥴이 없다면 빈 공간이 나타날 겁니다.
여러분이 잘 아시는 vi 편집기와 동일한 명령어를 통해서 수정/추가/저장/종료 하시면 됩니다.
생성되는 파일명(/tmp/crontab.RdOiFI)은 그때 그때 달라져요. 임시파일이거든요.
------------------------------------------------

30 08 * * * /home/invusomuch/daily_system_check.sh
~
~
~
~
~
~
~
~
"/tmp/crontab.RdOiFI" 1L, 55C
현재 crontab의 내용을 표시(목록)합니다.

$ crontab -l
30 08 * * * /home/invusomuch/daily_system_check.sh
현재 crontab을 제거합니다. 따라서 모든 crontab 작업의 일정을 취소합니다.

$ crontab -r
다른 사용자의 crontab을 편집합니다.

crontab -u invusomuch -e
invusomuch 라는 사용자의 crontab을 편집합니다.
crontab에서의 -u 옵션은 관리자 권한이 필요하므로 명령은 sudo 명령을 사용하여 실행됩니다.

$ sudo crontab -e -u invusomuch
invusomuch 라는 사용자의 crontab의 내용을 표시합니다.
crontab에서의 -u 옵션은 관리자 권한이 필요하므로 명령은 sudo 명령을 사용하여 실행됩니다.

$ sudo crontab -l -u invusomuch
invusomuch 라는 사용자의 crontab을 제거합니다. 따라서 invusomuch 라는 사용자의 모든 crontab 작업의 일정을 취소합니다.
crontab에서의 -u 옵션은 관리자 권한이 필요하므로 명령은 sudo 명령을 사용하여 실행됩니다.

$ sudo crontab -r -u invusomuch

 

0 0 1 1 * /home/invusomuch/backup.sh
1월 1일의 자정(00시 00분)에 /home/invusomuch/backup.sh 실행

0 0 1 * * /home/invusomuch/backup.sh
매월 1일의 자정(00시 00분)에 /home/invusomuch/backup.sh 실행

0 0 * * 0 /home/invusomuch/backup.sh
매주 일요일의 자정(00시 00분)에 /home/invusomuch/backup.sh 실행

0 0 * * * /home/invusomuch/backup.sh
매일의 자정(00시 00분)에 /home/invusomuch/backup.sh 실행

0 * * * * /home/invusomuch/backup.sh
매시 정각(00분)에 /home/invusomuch/backup.sh 실행

* * * * * /home/invusomuch/backup.sh
매분마다 /home/invusomuch/backup.sh 실행

*/1 * * * * /home/invusomuch/backup.sh
매분마다 /home/invusomuch/backup.sh 실행
위와 같은 표현방식입니다.
*/2 * * * * /home/invusomuch/backup.sh
매 2분마다 /home/invusomuch/backup.sh 실행

*/3 * * * * /home/invusomuch/backup.sh
매 3분마다 /home/invusomuch/backup.sh 실행

*/5 * * * * /home/invusomuch/backup.sh
매 5분마다 /home/invusomuch/backup.sh 실행

*/12 * * * * /home/invusomuch/backup.sh
매 12분마다 /home/invusomuch/backup.sh 실행
*/5 3,4,5 * * * /home/invusomuch/backup.sh

매일의 03시, 04시, 05시의 매 5분마다 /home/invusomuch/backup.sh 실행합니다.

실행시간은 다음과 같습니다.
03시00분, 05분, 10분...., 55분
04시00분, 05분, 10분...., 55분
05시00분, 05분, 10분...., 55분
*/5 1,16-18 * * * /home/invusomuch/backup.sh

매일의 01시, 16시, 17시, 18시의 매 5분마다 /home/invusomuch/backup.sh 실행합니다.

실행시간은 다음과 같습니다.
01시00분, 05분, 10분...., 55분
16시00분, 05분, 10분...., 55분
17시00분, 05분, 10분...., 55분
18시00분, 05분, 10분...., 55분
# 매주 일요일 자정에 백업을 수행합니다.
0 0 * * 0 /root/backup.sh

# 월요일에 매시간 캐시를 지웁니다.
0 * * * 1 /root/clearcache.sh

# 오전 6시와 오후 6시에 하루에 두 번 데이터를 백업합니다.
0 6,18 * * * /root/backup.sh	

# 10분마다 모니터링을 수행합니다.
*/10 * * * * /scripts/monitor.sh	

# 15분마다 백업을 수행합니다.
*/15 * * * * /root/backup.sh	

# 7월 20일에 1분마다 백업을 수행합니다.
* * 20 7 * /root/backup.sh	

# 매주 평일(월~금) 오후 10시에 캐시를 지웁니다.
0 22 * ​​* 1-5 /root/clearcache.sh

# 매주 화요일 자정에 백업을 수행합니다.
0 0 * * 2 /root/backup.sh

# 1월, 2월, 5월에는 매분 모니터링을 실시합니다.
* * * 1,2,5 * /scripts/monitor.sh

# 오전 5시 10분부터 시작하여 오전 5시에 10분마다 캐시를 ​​지웁니다.
10-59/10 5 * * * /root/clearcache.sh

# 해당 월의 첫 번째 날 오전 8시에 작업을 분기별로 실행합니다.
0 8 1 */3 * /home/user/script.sh

# 매시간 백업을 생성합니다.
0 * * * * /root/backup.sh

# 단일 cron 작업에 여러 작업을 포함합니다. 여러 작업을 동시에 실행하도록 예약하는 데 유용합니다.
* * * * * /scripts/script.sh; /scripts/scrit2.sh

# 시스템을 켤 때마다 캐시를 지웁니다.
@reboot /root/clearcache.sh

# 매월 첫 번째 월요일 오전 8시에 스크립트를 실행합니다.
0 8 1-7 * 1 /scripts/script.sh

# 매주 일요일 오전 4시 5분에 백업을 생성합니다.
5 4 * * 0 /root/backup.sh

# 매월 1일과 20일 오전 9시 15분에 모니터링을 실시합니다.
15 9 1,20 * * /scripts/monitor.sh

# 매시간 모니터링을 수행합니다.
@hourly /scripts/monitor.sh

# 매월 1일과 15일 사이 매주 수요일 자정에 스크립트를 실행합니다.
0 0 1,15 * 3 /scripts/script.sh

# 매월 1일 오후 2시 15분에 캐시를 지웁니다.
15 14 1 * * /root/clearcache.sh

# 월요일부터 금요일까지 매일 오전 8시부터 오후 5시까지 매시간 데이터베이스 상태를 확인하십시오.
00 08-17 * * 1-5 /bin/check-db-status

# 매년 1월 1일 오전 6시 15분에 백업을 수행합니다.
15 6 1 1 * /root/backup.sh

# 하루에 한 번 자정에 모니터링 스크립트를 실행합니다.
0 0 * * * /scripts/monitor.sh

# 매월 15일 자정에 캐시를 비웁니다.
0 0 15 * * /root/clearcache.sh

* * * * 1,5 /scripts/monitor.sh	# 매주 월요일과 금요일에 모니터링을 수행합니다.

 

Fields Description
* 해당 필드 값의 처음부터 끝까지를 의미
매분/매시/매일/매월/모든 요일
hours 항목의 예
1,2,4,7
1, 2, 4, 7시에 실행
hours 항목의 예
1,2,3,7-9
1, 2, 3, 7, 8, 9시에 실행
hours 항목의 예
0-23/2
격주를 의미
hours 항목의 예
*/2
두시간 마다
month, day of week 항목에 값의 앞 세글자로 지정 가능

 

 

string meaning expression
@reboot Run at startup. Run once, at startup of cron.
@yearly (or @annually) Run once a year at midnight of 1 January 0 0 1 1 *
@monthly Run once a month at midnight of the first day of the month 0 0 1 * *
@weekly Run once a week at midnight on Sunday morning 0 0 * * 0
@daily (or @midnight) Run once a day at midnight 0 0 * * *
@hourly Run once an hour at the beginning of the hour 0 * * * *
@every_minute Run once a minute. */1 * * * *
@every_second Run once a second.  

 

 

Crontab 재부팅 시 작업 등록 방법
@reboot

crontab을 사용하여 시스템 재부팅 시 실행할 작업을 예약하는 방법을 알아봅니다.

모든 시스템 부팅 시 cron 작업을 실행하려면 @reboot 작업 목록 끝에 호출되는 문자열을 추가합니다. 이 문자열로 정의된 작업은 시작 시 Linux가 재부팅된 직후에 실행됩니다.

@reboot문자열 을 추가할 때 다음 구문을 사용하십시오 .

@reboot [path to command] [argument1] [argument2] … [argument n]
@reboot [part to shell script]

참고: 항상 루트에서 시작하여 실행할 작업, 스크립트 또는 명령의 전체 경로를 사용하십시오.
# Linux가 다시 시작될 때 date.txt 라는 파일에 시스템 날짜를 기록 하려면 다음 문자열을 추가합니다.
@reboot date >> ~/date.txt

# 재부팅 시 백업 셸을 실행합니다.
@reboot /root/backup.sh

 

참고: 경우에 따라 구성이 작동하려면 부팅 시 crond 서비스를 활성화해야 합니다.
crond 서비스가 활성화되어 있는지 확인하려면 다음을 사용하십시오.

# sudo systemctl status cron.service

sudo systemctl enable cron.service

 

# 시스템 재부팅 후 작업을 지연하여 실행하려면 다음 문자열 을 추가할 때 sleep 명령 을 사용하십시오.
@reboot sleep [time in seconds] && [path to job]


# 재부팅 후 5분 후에 시스템 날짜가 포함된 텍스트 파일을 생성합니다.
@reboot sleep 300 && date >> ~/date.txt

시스템 재부팅 후 작업을 지연하여 실행하려면 다음 문자열 을 추가할 때 sleep 명령 을 사용하십시오.

 

 

Crontab의 권한 부여

이 두 파일은 중요한 역할을 합니다.

  • /etc/cron.allow - 이 파일이 존재하는 경우 해당 사용자가 cron 작업을 사용할 수 있는 사용자 이름을 포함해야 합니다.
  • /etc/cron.deny - cron.allow 파일은 없지만 /etc/cron.deny 파일은 존재하는 경우 cron 작업을 사용하려면 사용자가 /etc/cron.deny 파일에 나열되지 않아야 합니다.

이러한 파일이 모두 존재하지 않으면 사이트 종속 구성 매개변수에 따라 슈퍼 사용자만 cron 작업을 사용할 수 있거나 모든 사용자가 cron 작업을 사용할 수 있습니다.

 


Spring Cron

아래는 Spring cron에 대한 필드값과 허용값.
그리고 예제들을 알아봅니다.
Unix Cron과 Spring Cron의 차이점이 무엇인지도 확인해보세요.

 

Fields & Allowed Values
Name Required Allowed Values Allowed Special Characters
Seconds Y 0-59 , - * /
Minutes Y 0-59 , - * /
Hours Y 0-23 , - * /
Day of month Y 1-31 , - * ? / L W C
Month Y 0-11 or JAN-DEC , - * /
Day of week Y 1-7 or SUN-SAT , - * ? / L C #
Year N empty or 1970-2099 , - * /

 

cron 표현 예제 (Cron Expression)
Expression Means
0 0 12 * * ? Fire at 12:00 PM (noon) every day
0 15 10 ? * * Fire at 10:15 AM every day
0 15 10 * * ? Fire at 10:15 AM every day
0 15 10 * * ? * Fire at 10:15 AM every day
0 15 10 * * ? 2005 Fire at 10:15 AM every day during the year 2005
0 * 14 * * ? Fire every minute starting at 2:00 PM and ending at 2:59 PM, every day
0 0/5 14 * * ? Fire every 5 minutes starting at 2:00 PM and ending at 2:55 PM, every day
0 0/5 14,18 * * ? Fire every 5 minutes starting at 2:00 PM and ending at 2:55 PM, AND fire every 5 minutes starting at 6:00 PM and ending at 6:55 PM, every day
0 0-5 14 * * ? Fire every minute starting at 2:00 PM and ending at 2:05 PM, every day
0 10,44 14 ? 3 WED Fire at 2:10 PM and at 2:44 PM every Wednesday in the month of March
0 15 10 ? * MON-FRI Fire at 10:15 AM every Monday, Tuesday, Wednesday, Thursday and Friday
0 15 10 15 * ? Fire at 10:15 AM on the 15th day of every month
0 15 10 L * ? Fire at 10:15 AM on the last day of every month
0 15 10 ? * 6L Fire at 10:15 AM on the last Friday of every month
0 15 10 ? * 6L Fire at 10:15 AM on the last Friday of every month
0 15 10 ? * 6L 2002-2005 Fire at 10:15 AM on every last friday of every month during the years 2002, 2003, 2004, and 2005
0 15 10 ? * 6#3 Fire at 10:15 AM on the third Friday of every month
0 0 12 1/5 * ? Fire at 12 PM (noon) every 5 days every month, starting on the first day of the month
0 11 11 11 11 ? Fire every November 11 at 11:11 AM
0 0/5 * * * ? Fires every 5 minutes
10 0/5 * * * ? Fires every 5 minutes, at 10 seconds after the minute (i.e. 10:00:10 am, 10:05:10 am, etc.).
0 30 10-13 ? * WED,FRI Fires at 10:30, 11:30, 12:30, and 13:30, on every Wednesday and Friday.
0 0/30 8-9 5,20 * ? Fires every half hour between the hours of 8 am and 10 am on the 5th and 20th of every month. Note that the trigger will NOT fire at 10:00 am, just at 8:00, 8:30, 9:00 and 9:30.
   
0 0 0 L * * last day of the month at midnight
0 0 0 L-3 * * third-to-last day of the month at midnight
0 0 0 * * 5L last Friday of the month at midnight
0 0 0 * * THUL last Thursday of the month at midnight
   
0 0 0 1W * * first weekday of the month at midnight
0 0 0 LW * * last weekday of the month at midnight
   
0 0 0 ? * 5#2 the second Friday in the month at midnight
0 0 0 ? * MON#1 the first Monday in the month at midnight

 

Expression
Means
0 0 * * * * top of every hour of every day
*/10 * * * * * every ten seconds
0 0 8-10 * * * 8, 9 and 10 o’clock of every day
0 0 6,19 * * * 6:00 AM and 7:00 PM every day
0 0/30 8-10 * * * 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 every day
0 0 9-17 * * MON-FRI on the hour nine-to-five weekdays
0 0 0 25 12 ? every Christmas Day at midnight

 

728x90

댓글