2023년 9월 23일 작성
crontab - Linux Task Scheduler
crontab은 Linux에 기본 program으로 설치되어 있는 task scheduler입니다.
crontab : Task Scheduler로 주기적인 작업 관리하기
-
crontab은 Linux에 기본 program으로 설치되어 있는 작업 Scheduler입니다.
- crontab으로 작업을 주기적으로 실행하도록 할 수 있습니다.
- 예를 들어, ‘매일 1시에 이 작업을 실행하라.’, ‘10분마다 이 script를 실행하라.’
- 사용자는 작업을 등록하고, crontab은 작업을 실행합니다.
- 따라서 사용자는 작업을 관리하는 script file을 작성하기만 합니다.
사용법
crontab [option]
Option
| Option | 설명 |
|---|---|
| -l | cat 명령어를 사용한 것처럼, crontab의 작업 설정 내용을 출력합니다. |
| -r | 모든 작업 설정 내용을 지웁니다. |
| -e | 작업 설정 내용을 관리하는 file을 text editor로 실행합니다. 실행 시간을 지정하기 위한 표현식을 사용하여 file 내용을 작성합니다. |
crontab -e에서 작업 정의하기
- 편집 mode에서는 crontab의 작업 내용을 정의할 수 있습니다.
- crontab 설정 편집기로 vim 편집기가 실행되었다면,
i를 눌러 편집을 시작하고,esc와:wq를 순서대로 입력하여 편집을 종료합니다.- Linux에서 crontab의 기본 편집기는
select-editor명령어로 다른 편집기(예를 들어,vim,nano,gedit등)로 바꿀 수도 있습니다.
- Linux에서 crontab의 기본 편집기는
- 시간을 표현하는 crontab의 특수한 표현식(expression)을 사용하여, 명령어 또는 shell script을 scheduler에 등록합니다.
작업 실행 시간 설정하기
# 분 시 일 월 요일 작업
[minute] [hour] [day_of_month] [month] [day_of_week] [shell_path]
분,시,일,월,요일의 5가지 값을 순서대로 작성하여 작업 실행 시간을 지정할 수 있습니다.- 값들은 공백(space)으로 구분합니다.
| 위치 | 설정값 | 설명 |
|---|---|---|
| 1번째 | 0 ~ 59, *(1분 마다). |
분(minute)을 의미하며, 몇 분에 실행할 것인지 설정합니다. |
| 2번째 | 0 ~ 23, *(1시간 마다). |
시간(hour)을 의미하며, 몇 시에 실행할 것인지 설정합니다. |
| 3번째 | 0 ~ 31, *(매일). |
일(day of month)을 의미하며, 몇 일에 실행할 것인지 설정합니다. |
| 4번째 | 1 ~ 12, *(매월). |
월(month)을 의미하며, 몇 월에 실행할 것인지 설정합니다. |
| 5번째 | 0(일요일) ~ 6(토요일), *(매일). |
요일(minute)을 의미하며, 무슨 요일에 실행할 것인지 설정합니다. |
작성 예시
# 매분 '/home/test.sh' file을 실행합니다.
* * * * * /home/test.sh
# 매주 일요일 오전 2시 00분에 '/home/test.sh' file을 실행합니다.
0 2 * * 0 /home/test.sh
# 매일 오전 2시, 오후 2시에 '/home/test.sh' file을 실행합니다.
0 2,14 * * * /home/test.sh
# 매 10분마다 '/home/test.sh' file을 실행합니다.
*/10 * * * * /home/test.sh
# 매일 자정 0분부터 30분까지 '/home/test.sh' file을 실행합니다.
0-30 0 * * * /home/test.sh
표현식 예시
| 표현식 | 설명 |
|---|---|
* * * * * |
매일 1분마다 실행합니다. |
5 * * * * |
매일 매시간 5분에 실행합니다. 1시간 간격으로 실행합니다. |
*/5 * * * * |
매일 5분마다 실행합니다. |
*/10 * * * * |
매일 10분마다 실행합니다. |
0,10,20,30,40,50 * * * * |
매일 10분마다 실행합니다. |
0 18 * * * |
매일 18시 0분에 실행합니다. |
45 22 * * * |
매일 22시 45분에 실행합니다. |
28 03 * * * |
매일 3시 28분에 실행합니다. |
* 1 * * * |
매일 1시 0분부터 1시 59분 사이에 1분 간격으로 실행합니다. |
0 */1 * * * |
매일 1시간 간격(매시간 00분)으로 실행합니다. |
0 */12 * * * |
매일 12시간마다 실행합니다. |
0 6,12 * * * |
매일 6시, 12시에 실행합니다. |
10 2-5 * * * |
매일 2시부터 5시 사이 매시간 10분에 실행합니다. 2시 10분, 3시 10분, 4시 10분, 5시 10분에 실행합니다. |
5 8-20/3 * * * |
매일 8시부터 20시 사이 3시간 간격으로 5분에 실행합니다. 8시 5분, 11시 5분, 14시 5분, 17시 5분, 20시 5분에 실행합니다. |
42 4 10 * * |
매달 10일 04시 42분에 실행합니다. |
30 5 1,15 * * |
매달 1일과 15일의 5시 30분에 실행합니다. |
0-10 17 1 * * |
매달 1일 17시 0분부터 17시 10분까지 1분 단위로 실행합니다. |
0 17 * * 1 |
매주 월요일 17시 0분에 실행합니다. |
0,10 17 * * 0,2,3 |
매주 일요일, 화요일, 수요일의 17시 00분과 17시 10분에 실행합니다. |
0 0 1,15 * 1 |
매달 1일과 15일 그리고 월요일 24시 0분에 실행합니다. |
0 6,12 * * 0,3 |
수요일, 일요일마다 6시, 12시에 실행합니다. |
0 21 * * 1-6 |
월요일부터 토요일까지 21시 0분에 실행합니다. |