우수한 소프트웨어와 실용적인 튜토리얼
CronJob은 Linux입니다임무 계획특정 시간에 작업을 예약하거나 특정 시간 후에 작업을 반복하도록 예약하는 프로그램입니다. CentOS 8에서 설정하는 방법은 다음과 같습니다.크론 직업.
크론(Cron)은 유닉스 계열 운영 체제를 위한 시간 기반 작업 관리 시스템입니다. 사용자는 크론을 사용하여 정해진 시간, 날짜, 간격으로 정기적인 작업(명령어나 스크립트 등)을 실행할 수 있습니다. 크론은 유지 관리 및 관리에 자주 사용되지만, 파일이나 이메일을 정기적으로 다운로드하는 등 다른 용도로도 사용할 수 있습니다. 크론이라는 단어는 원래 시간을 의미하는 그리스어 크로노스(chronos)에서 유래했습니다.
일반적으로 작업 일정(crontab) 파일에 저장된 명령은 백그라운드에서 실행되어 실행해야 할 정기적인 작업이 있는지 매분 확인하는 crond 데몬에 의해 활성화됩니다. 이러한 작업을 일반적으로 cron 작업이라고 합니다.
CentOS 8에서 Cron 작업을 설정하려면 먼저 서버에서 sudo 권한이 있는 루트가 아닌 사용자 계정이 있어야 합니다.
텍스트 편집기를 사용하여 crontab을 열려면 다음 명령을 입력하세요.
crontab -e
위 명령을 입력하면 텍스트 편집기를 선택하라는 메시지가 표시됩니다.
crontab에서 mh dom mon dow 사용자 헤더는 다음과 같은 의미를 갖습니다.
* m = 크론 작업이 실행될 분 (0~59) * h = 작업이 실행될 시간을 나타내는 정수 (0~23) * dom = 크론 작업이 실행될 날짜 (1~31) * mon = 크론 작업이 실행될 날짜 (1~12) * dow = 요일 (0~6) (일요일은 0) * user = 크론을 실행할 사용자 * command = 실행하려는 Linux 명령어
crontab 타이밍의 별표()
Cronjob을 설정할 때 별표(), 널리 사용됩니다. 즉,m(분)으로 표현하면 1분마다 명령이 실행됩니다.
Cron 작업의 기본 예
매분 실행되는 Cron
* * * * * (사용자) (명령)
10분마다 Cron을 실행하세요
10 * * * * (사용자) (명령)
30분마다 Cron을 실행하세요
30 * * * * (사용자) (명령)
매 시간(분이 0이 될 때) 실행되는 Cron
0 * * * * (사용자) (명령)
자정에 실행되는 Cron
0 0 * * * (사용자) (명령)
오전 8시에 실행되는 Cron
0 8 * * * (사용자) (명령)
PHP 스크립트를 실행하기 위한 Cron
* * * * * 루트 /usr/bin/php /var/www/html/project/test.php
crontab의 고급 예제
crontab에서 쉼표 사용: 다음 명령은 1월, 3월, 7월, 12월 15일 오전 8시 45분에 실행됩니다.
45 8 15 1월,3월,7월,12월 * (사용자) (명령어)
crontab에서 나누기 연산자를 사용하세요. 분을 10으로 나누세요. 다음 명령은 매 시간의 0분, 10분, 20분, 30분, 40분, 50분에 실행됩니다(모든 분은 10으로 나누어 떨어집니다).
*/10 * * * * (사용자) (명령)
crontab의 대시: 다음 crontab은 매월 15일부터 20일까지 실행됩니다. 대시는 기간을 나타냅니다.
0 0 15-20 * *(사용자) (명령어)
Cron 표현식에 대한 자세한 설명:
Cron 표현식은 5~6개의 공백으로 구분된 문자열이며, 6~7개의 필드로 나뉩니다. 각 필드는 의미를 나타냅니다. Cron에는 다음과 같은 두 가지 구문 형식이 있습니다.
초 분 시간 일 월 월 요일 년 또는
초 분 시간 일/월/요일
각 필드에 나타날 수 있는 문자는 다음과 같습니다.
초: ", - * /" 4자를 포함할 수 있으며, 유효 범위는 0-59 정수입니다.
분: ", - * /" 4자를 포함할 수 있으며, 유효 범위는 정수 0-59입니다.
시간: ", - * /" 4자를 포함할 수 있으며, 유효 범위는 0-23 정수입니다.
DayofMonth: ", - * / ? LWC"를 8자로 포함할 수 있으며, 유효 범위는 정수 0~31입니다.
월: ", - * /" 4자까지 허용되며, 유효 범위는 1~12 또는 JAN-DEC의 정수입니다.
요일: ", - * / ? LC #"가 나타날 수 있습니다. 유효한 범위는 1에서 7까지의 정수 또는 SUN에서 SAT까지의 두 범위입니다. 1은 일요일, 2는 월요일을 의미합니다.
연도: ", - * /" 4자를 포함할 수 있으며, 유효 범위는 1970-2099입니다.
각 필드는 숫자를 사용하지만, 다음과 같은 특수 문자도 나타날 수 있으며, 그 의미는 다음과 같습니다.
*: 필드의 모든 값이 일치함을 나타냅니다. 분 필드에 사용하는 경우 이벤트가 1분마다 실행됩니다.
?:는 DayofMonth 및 DayofWeek 필드에만 사용할 수 있습니다. 필드의 모든 값과 일치할 수도 있지만, 실제로는 그렇지 않습니다. DayofMonth와 DayofWeek는 서로 영향을 미치기 때문입니다. 예를 들어, 20일이 요일과 관계없이 매월 20일에 일정을 트리거하려면 다음 구문만 사용할 수 있습니다. 13 13 15 20 * ?, 여기서 마지막 숫자는 ?만 사용할 수 있으며,당신이 사용하는 경우즉, 요일과 관계없이 트리거된다는 뜻인데, 사실은 그렇지 않습니다.
-:는 범위를 나타냅니다. 예를 들어, 분 필드에 5-20을 입력하면 5분부터 20분까지 매분 트리거가 실행됩니다.
/: 트리거가 시작 시간에 시작하여 고정된 간격으로 한 번 트리거됨을 나타냅니다. 예를 들어, 분 필드에 5/20을 사용하면 트리거가 5분마다 한 번, 그리고 25분, 45분 등 각 시간에 한 번 트리거됨을 의미합니다.
,: 열거형 값 목록을 나타냅니다. 예를 들어, 분 필드에 5,20을 사용하면 트리거가 매분 5분과 20분에 한 번씩 실행됩니다.
L: 마지막을 의미하며, DayofWeek 및 DayofMonth 필드에만 사용할 수 있습니다. DayofWeek 필드에 5L을 사용하면 마지막 목요일에 트리거됩니다.
W: 유효한 근무일(월요일부터 금요일까지)을 나타내며, DayofMonth 필드에만 사용할 수 있습니다. 시스템은 지정된 날짜에 가장 가까운 유효한 근무일에 이벤트를 트리거합니다. 예를 들어, DayofMonth에 5W를 사용할 경우, 5일이 토요일이면 가장 가까운 근무일인 금요일, 즉 4일에 이벤트가 트리거됩니다. 5일이 일요일이면 6일(월요일)에 이벤트가 트리거되고, 5일이 월요일과 금요일 사이에 있으면 5일에 이벤트가 트리거됩니다. 또 다른 중요한 점은 W에 대한 가장 가까운 검색이 해당 월을 넘지 않는다는 것입니다.
LW: 이 두 문자를 함께 사용하면 한 달의 마지막 영업일, 즉 마지막 금요일을 나타낼 수 있습니다.
#: 각 달의 요일을 결정하는 데 사용됩니다. DayofMonth 필드에만 사용할 수 있습니다. 예를 들어, 4#2는 매월 두 번째 수요일을 의미합니다.
예:
0 0 2 1 * ? * 는 매월 1일 오전 2시에 작업을 예약한다는 의미입니다.
0 15 10 ? * MON-FRI는 작업이 매주 월요일부터 금요일까지 오전 10시 15분에 실행됨을 의미합니다.
0 15 10 ? 6L 2002-2006은 2002년부터 2006년까지 매월 마지막 금요일 오전 10시 15분에 작업이 실행됨을 의미합니다.
Cron 표현식에는 공백으로 구분된 최소 6개(가능하면 7개)의 시간 요소가 있습니다.
순서대로:
초(0~59)
분(0~59)
시간(0~23)
일(월) (0~31, 단, 월의 일수를 고려해야 함)
월(0~11)
요일(주) (1~7 1=일 또는 일, 월, 화, 수, 목, 금, 토)
년도(1970-2099)
각 요소는 값(예: 6), 연속 간격(9-12), 간격(8-18/4)(/는 4시간 간격을 의미), 목록(1, 3, 5) 또는 와일드카드일 수 있습니다. "일"과 "요일" 요소는 상호 배타적이므로 둘 중 하나를 설정해야 합니까?
0 0 10,14,16 * * ? 매일 오전 10시, 오후 2시, 오후 4시
0 0/30 9-17 * * ? 9-5 근무 시간 중 30분마다
0 0 12 ? * WED는 매주 수요일 정오 12시를 의미합니다.
"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 * * ?"는 매일 오후 2시에서 오후 2시 59분 사이에 매분 발생합니다.
"0 0/5 14 * * ?"는 매일 오후 2시에서 오후 2시 55분 사이에 5분마다 트리거됩니다.
"0 0/5 14,18 * * ?"는 매일 오후 2시부터 오후 2시 55분 사이, 오후 6시부터 오후 6시 55분 사이에 5분마다 트리거됩니다.
"0 0-5 14 * * ?"는 매일 오후 2시부터 오후 2시 5분 사이에 매분 발생합니다.
"0 10,44 14 ? 3 WED"는 매년 3월 수요일 오후 2시 10분과 오후 2시 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분에 트리거됩니다.
일부 하위 표현식에는 범위나 목록이 포함될 수 있습니다.
예를 들어, 하위 표현식(일(주))은 "월-금", "월, 수, 금", "월-수, 토"가 될 수 있습니다.
“" 문자는 가능한 모든 값을 나타냅니다.
그러므로,""(월)이라는 하위 표현에서는 각 달을 의미합니다.""하위 표현식(day(week))은 주중 매일을 의미합니다.
"/" 문자는 값의 증가를 지정하는 데 사용됩니다.
예를 들어, 하위 표현식(분)의 "0/15"는 0분부터 시작하여 15분마다를 의미합니다.
하위 표현식(분)의 "3/20"은 3분부터 시작하여 20분마다를 의미합니다("3, 23, 43"과 같은 의미입니다).
"?" 문자는 일(월)과 일(주) 하위 표현식에서만 사용되어 값이 지정되지 않았음을 나타냅니다.
두 하위 표현식 중 하나에 값이 할당되면 충돌을 피하기 위해 다른 하위 표현식의 값을 "?"로 설정해야 합니다.
"L" 문자는 일(월)과 일(주) 하위 표현식에서만 사용되며 "last"라는 단어의 약어입니다.
하지만 두 하위 표현의 의미는 다릅니다.
일(월) 하위 표현식에서 "L"은 해당 월의 마지막 날을 의미합니다.
일(주) 표현에서 "L"은 주의 마지막 날인 SAT을 의미합니다.
"L" 앞에 특정한 의미가 있는 경우, 다른 의미를 갖습니다.
예를 들어, "6L"은 그 달의 마지막 여섯 번째 날을 의미하고, "FRIL"은 그 달의 마지막 금요일을 의미합니다.
참고: "L" 매개변수를 사용할 때 목록이나 범위를 지정하지 마십시오. 문제가 발생할 수 있습니다.
필드 값에 특수 문자 허용
초 0-59, - * /
포인트 0-59, - * /
시간 0-23, - * /
날짜 1-31 , - * ? / LWC
1~12월 또는 1월~12월, - * /
월요일-토요일 또는 일요일-토요일, - * ? / LC #
년도 (선택사항) 비워두세요, 1970-2099 , - * /
CentOS 8에서 Cron 작업을 설정하는 방법입니다. 이에 대해 궁금한 점이 있으면 아래에 댓글을 남겨주세요.