공부하는 중~~/분류하기 애매한 것들

[Linux] Crontab을 사용한 스케줄링 수행

임대추 2022. 7. 5. 10:59

 

 

안녕하세요 대추입니다.

 

오늘은 crontab을 활용하여 배치를 하 는 방법에 대해 기록하겠습니다.

배치의 의미는 어떠한 일이 일괄적으로 처리되게 한다는 의미인데

여기에 crontab을 사용하여 어떠한 일을 일괄적으로 정해진 스케줄에 따라서 처리되게 하려는 것입니다.

 

윈도우의 경우에는 윈도우 스케줄링을 OS 차원에서 지원하고 있으며

linux, mac 계열의 경우 crontab을 사용하여 편리하게 분, 시간, 요일 등 상세한 조건을 사용하여

배치 파일을 스케줄링 할 수 있습니다.

 

그럼 배치 파일은

왜 쓰는 것이고

왜 스케줄링 하는 것일 까요?

 

많은 예시가 있지만 현재 제가 사용하는 이유를 빗대어 설명하자면

"DB의 데이터를 등록, 갱신하는 과정"을 "매일 AM 01시"에 한다고 가정하겠습니다.

배치파일을 안쓰고 스케줄링을 하지 않는다면 개발자 혹은 관리자가

매일 데이터를 등록, 갱신하는 일을 수동으로 해야합니다.

하지만 이것이 스크립트로 작성 가능한 작업이며 매일 실행될 필요가 있다면

1. 등록 갱신하는 배치파일을 만들고 

2. 만든 배치파일을 매일 반복하게 스케줄링 하면

같은 일을 반복할 필요가 없으며 휴먼에러를 줄일 수 있습니다.

 

서론은 여기까지고 이제 실제로 어떻게 사용하는지 

Linux 기준으로 설명해 드리겠습니다.

 

먼저 crontab을 사용하기 위한 간단한 설정법을 이해할 필요가 있습니다.

 

1. Crontab의 설정법

# 분 시간 일 월 요일 (shellCript or some program)
* * * * * /home/test.sh

생각보다 간단합니다.

총 6개의 인자가 있으며 앞의 5개는 시간에 관련된 인자이며 맨 뒤의 것은 실행할 쉘 스크립트 or 프로그램을 의미합니다.

 

예시)

# example (실행할 프로그램을 /home/test.sh로 고정)
# 모든 예시는 분, 시, 일, 월, 요일에 공통으로 사용가능한 형태입니다.

# 매일 1분마다 실행
* * * * * /home/test.sh

# 매일 매 시간 n분마다 실행
n * * * * /home/test.sh

# 매일 n분마다 실행
*/n * * * * /home/test.sh

# 매일 n 시에 실행
0 n * * * /home/test.sh

# 매일 n, m 시에 실행
0 n,m * * * /home/test.sh

# 매일 n ~ (m) 시동안 매 분마다 실행
* n-m * * * /home/test.sh

# 매일 n ~ (m) 시동안 q 간격마다 매 분 실행
* n-m/q * * * /home/test.sh

# 요일의 경우 0 ~ 6의 형태며 일 ~ 토요일의 순서입니다.
# 매주 월요일 n시에 실행
0 n * * 1 /home/test.sh

# 매달 매주 월요일, 15일에 n시에 실행
0 n 15 * 1 /home/test.sh

# 일 ~ 토 n시에 실행
0 n * * 0- /home/test.sh

위의 예시를 보고 조금만 공부하시면 얼마든지 다양하게 스케줄링이 되도록 응용하실 수 있다고 생각합니다.

 

2. 배치 파일을 crontab에 적용시키기

crontab -e

리눅스 환경에서 위의 명령어를 입력하시면 아래의 사진과 같이 나타납니다.

crontab 설정 예시

실제로 사용 중인 설정 모습이며 

첫번째 줄은 AM 03:20 에 뒤의 프로그램을 실행한다는 의미이며

두번째 줄은 매일 AM 0시와 6시에 뒤의 batch.sh 파일을 실행한다는 의미입니다.

 

그리고 저장하시면  crontab에 적용되어 스케줄링 한대로 배치 작업이 진행되게 됩니다.

생각보다 정말 쉽죠?

 

 

혹시 쉘 스크립트 작성하는 방법을 모르시나요?

그럼 아래의 글을 참고해보세요.

https://daechu.tistory.com/49

 

[Linux] 쉘 스크립트 작성법 및 자주 사용하는 형태 (날짜, Log, curl, 백업)

안녕하세요 대추입니다. 오늘은 서버 작업을 하며 예상외로 사용하는 경우가 많은 쉘 스크립트 작성법에 대해 기록하겠습니다. 간단한 정의부터 알고 넘어갈까요? 쉘 "스크립트" 에서 스크립트

daechu.tistory.com

 

 

반응형