[Crontab] 리눅스 크론탭(Linux Crontab) 설정
- 아키텍처, 빌드, 관리/서버
- 2022. 1. 20.
리눅스(Linux)에서 어플리케이션을 돌려야 될 경우, 크론탭을 알아야 되는 건 필수라 할 수 있다. 크론탭은 특정 시간에 특정 작업을 할 수 있게 도와주는 기능으로 Web의 경우 크론탭(ex: spring scheduler)이 내장되어 있는 경우가 있어서 몰라도 상관 없지만, 어플리케이션은 프로세스가 종료되기 때문에 OS에서 이 기능을 해줘야 한다.
크론탭의 기본 기능
크론탭 리스트
crontab -l
크론탭으로 만든 스케쥴들을 출력한다. 마치 cat으로 텍스트 내용을 출력하는 것과 유사한 모습이다.
크론탭 작성
crontab -e
위와 같은 명령어를 한 경우 vi 편집기같은 화면이 뜨게 된다. 스케쥴링을 작성 한 후 vi 편집기처럼 ESC -> 콜론(:) -> wq를 누르면 저장이 된다. 만약 입력한 스케쥴링이 마음에 들지 않는다면 vi 편집기처럼 q!로 강제 종료하면 된다.
크론탭 작성
크론탭은 총 5개의 일정 설정 구간이 있고, 각각의 값을 무시하려면 "*"를 입력하면 된다.
스케쥴링 예시는 /home/needneo 위치에 run_application.sh 파일을 실행시킨다고 가정을 해보며, 아래의 설명을 기반으로 잘 조합을 하면 될 것이다.
a b c d e /hom/needneo/run_application.sh output(선택)
1. 처음 5개 필드인 a b c d e 는 작업의 시간/날짜 및 반복 등 스케쥴링을 지정합니다.
2. 5개 필드 이후엔 실행해야 할 스크립트를 지정합니다.
3. 마지막 output 영역은 선택사항이며, 시스템이 사용자에게 작업 완료를 알리는 방법을 정의한다.
스케쥴 설명
Field | 가능한 Value | Syntax | 설명 |
[a] – 분 | 0 – 59 | 5 * * * * | 매시간 5분마다 실행을 한다 |
[b] – 시간 | 0 – 23 | 0 5 * * * | 매일 오전 5시마다 실행을 한다 |
[c] – 일 | 0 – 31 | 0 0 5 * * | 매월 5일마다 실행을 한다 |
[d] – 월 | 0 = 없음 및 12 = 12월 | 0 0 0 5 * | 5월마다 실행을 한다 |
[e] – 요일 | 0 = 일요일 및 7 = 일요일 | 0 0 * * 7 | 현재 위치의 7은 작업이 일요일에만 실행됨을 의미 |
Output (선택사항)
크론탭은 스케쥴링을 실행하면 소유자에게 이메일을 보내게 되는데 이 옵션을 끄고 싶다면, 아래와 같은 옵션을 추가한다.
>/dev/null 2>&1
그외 연산자
별표 (*) | 모든 값을 나타낸다. |
쉼표 (,) | 개별 값을 지정한다. |
대시 (-) | 값의 범위를 나타낸다 |
슬래시 (/) | 값을 단계로 나누는데 사용된다. ex) */5의 5분의 1마다 실행 |
스케쥴링 예시
명령문 | 크론탭 설명 |
* * * * * /home/needneo/run_application.sh | 매분마다 스케쥴 실행 |
30 * * * * /home/needneo/run_application.sh | 30분마다 스케쥴 실행 |
0 * * * * /home/needneo/run_application.sh | 매시간마다 스케쥴 실행 |
0 0 * * * /home/needneo/run_application.sh | 매일 자정에 스케쥴 실행 |
0 5 * * * /home/needneo/run_application.sh | 매일 오전 5시에 스케쥴 실행 |
0 0 1 * * /home/needneo/run_application.sh | 매월 1일마다 스케쥴 실행 |
0 0 0 12 * /home/needneo/run_application.sh | 12월 1일마다 스케쥴 실행 |
0 0 0 0 6 /home/needneo/run_application.sh | 토요일 자정에 스케쥴 실행 |
연관포스팅
Reference
'아키텍처, 빌드, 관리 > 서버' 카테고리의 다른 글
[Tomcat] 톰캣 구동 중, catalina.out 삭제시 (0) | 2021.02.03 |
---|