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분에 실행합니다. |