1. 개요
간단히 말해 cron은 Unix 기반 시스템에서 사용할 수 있는 기본 유틸리티입니다. 사용자가 지정된 날짜/시간에 주기적으로 작업을 실행하도록 예약할 수 있습니다. 그리고 당연히 사람의 개입이 필요한 많은 프로세스 실행을 자동화하기 위한 훌륭한 도구입니다.
Cron은 데몬 프로세스로 실행됩니다. 즉, 한 번만 시작하면 백그라운드에서 계속 실행됩니다. 이 프로세스는 crontab 을 사용 하여 일정 항목을 읽고 작업을 시작합니다.
시간이 지남에 따라 cron 표현 형식이 널리 채택되었고 다른 많은 프로그램과 라이브러리에서 이를 사용합니다.
2. 크론탭으로 작업 하기
크론 일정은 아래에있는 간단한 텍스트 파일 / var / spool / cron / crontabs 디렉토리 Linux 시스템에서. crontab 파일을 직접 편집할 수 없으므로 crontab 명령을 사용하여 액세스해야 합니다 .
crontab 파일 을 열려면 다음 명령을 실행해야 합니다.
crontab -e
crontab의 각 줄 은 표현식과 실행할 명령이 있는 항목입니다.
* * * * * /usr/local/ispconfig/server/server.sh
이 항목은 언급된 스크립트를 1분마다 실행합니다.
3. 크론 표현
cron 표현식을 이해합시다 .
5개의 필드로 구성됩니다.
<minute> <hour> <day-of-month> <month> <day-of-week> <command>
3.1. 표현식의 특수 문자
- * (all) 은 이벤트가 모든 시간 단위에 대해 발생하도록 지정합니다. 예를 들어, < 분> 필드 의 "*" 는 "분마다"를 의미합니다.
- ? (any) 는 랜덤의 값을 나타내기 위해 < day-of-month> 및 < day-of -week> 필드에 사용되므로 필드 값을 무시합니다. 예를 들어, "매월 5일"에 스크립트를 실행하려면 해당 날짜의 요일이 무엇인지에 관계없이 "?"를 지정합니다. < 요일> 필드에
- – (범위) 는 값 범위를 결정합니다. 예를 들어, <시간> 필드 의 "10-11" 은 "10시와 11시"를 의미합니다.
- , (값) 은 여러 값을 지정합니다. 예를 들어 < 요일> 필드 의 "MON, WED, FRI " 는 "월요일, 수요일, 금요일"을 의미합니다.
- /(증분) 은 증분 값을 지정합니다. 예를 들어, < 분> 필드 의 "5/15" 는 "한 시간의 5, 20, 35 및 50분"을 의미합니다.
- L(마지막) 은 다양한 분야에서 사용될 때 다른 의미를 갖습니다. 예를 들어 < day-of-month> 필드에 적용된 경우 해당 월의 마지막 날, 즉 "1월 31일" 등을 의미합니다. "L-3"과 같은 오프셋 값과 함께 사용할 수 있습니다. 이는 "달의 세 번째에서 마지막 날"을 나타냅니다. < day-of-week> 에서는 "주의 마지막 요일"을 지정합니다. 또한 "지난 금요일"을 나타내는 "6L"과 같이 < day-of-week> 의 다른 값과 함께 사용할 수도 있습니다 .
- W(요일) 는 해당 월의 지정된 날짜에 가장 가까운 요일(월요일~금요일)을 결정합니다. 예를 들어 < day-of-month> 필드에 "10W"를 지정 하면 "그 달의 10일에 가까운 평일"을 의미합니다. 따라서 "10일"이 토요일이면 "9일"에 작업이 트리거되고 "10일"이 일요일이면 "11일"에 트리거됩니다. < day-of-month> 에 "1W"를 지정 하고 "1st"가 토요일이면 작업이 월요일인 "3rd"에 트리거되고 이전 달로 점프하지 않습니다.
- # 요일의 "N번째" 발생을 지정합니다. 예를 들어 "매월 세 번째 금요일"은 "6#3"으로 표시될 수 있습니다.
3.2. 크론 표현식 예
필드와 특수 문자 조합을 사용하여 cron 표현식 의 몇 가지 예를 살펴보겠습니다 .
매일 오후 12시(정오) :
0 12 * * ?
매일 오후 1시에 시작하여 오후 1시 55분에 종료하고 오후 6시에 시작하여 오후 6시 55분에 종료되는 5분마다 :
0/5 13,18 * * ?
매일 오후 1시에 시작하여 오후 1시 5분에 끝나는 매분 :
0-5 13 * * ?
6월 매주 화요일 오후 1시 15분, 1시 45분 :
15,45 13 ? 6 Tue
매주 월요일, 화요일, 수요일, 목요일, 금요일 오전 9시 30분 :
30 9 ? * MON-FRI
매월 15일 오전 9시 30분 :
30 9 15 * ?
매월 말일 오후 6시 :
0 18 L * ?
매월 3일~말일 오후 6시 :
0 18 L-3 * ?
매월 마지막 목요일 오전 10시 30분 :
30 10 ? * 5L
매월 셋째주 월요일 오전 10시 :
0 10 ? * 2#3
매월 10일부터 5일 동안 매일 자정 12시 :
0 0 10/5 * ?
4. Cron 특수 문자열
cron 표현식에 지정된 필드 외에도 필드 대신 사용할 수 있는 사전 정의된 특수 값에 대한 지원도 있습니다.
- @reboot – 시작 시 한 번 실행
- @yearly 또는 @annualy – 1년에 한 번 실행
- @monthly – 한 달에 한 번 실행
- @weekly – 일주일에 한 번 실행
- @daily 또는 @midnight – 하루에 한 번 실행
- @hourly – 매시간 실행
5. 결론
이 빠른 기사에서는 cron 작업과 crontab을 살펴보았습니다 .
우리는 또한 일상 업무에서 사용하거나 단순히 다른 표현을 추론할 수 있는 많은 표현 예를 보았습니다.