Cron으로 스크립트 예약 실행하기

Bash 스크립팅 입문

Alex Scriven

Data Scientist

왜 스크립트를 예약하나요?

 

스크립트 예약이 유용한 상황은 많습니다:

  1. 정기 작업. 매일, 매주, 하루 여러 번 등.
    • 캘린더 알림을 둘 수 있지만, 잊어버리면 어떻게 할까요?
  2. 자원 최적화(이른 새벽 시간에 실행)

cron으로 스크립트를 예약하는 것은 현대 데이터 인프라의 필수 역량입니다.

Bash 스크립팅 입문

cron이란?

 

Cron은 70년대부터 유닉스 계열 시스템의 일부였습니다. 사람들은 그때부터 자동화를 좋아했습니다!

이름은 그리스어 시간이라는 뜻의 chronos에서 왔습니다.

구동체는 crontab이며, 그 안에 cronjobs가 줄마다 들어 있고, 각 항목이 어떤 코드를 언제 실행할지 지정합니다.

Bash 스크립팅 입문

Crontab - cronjob의 구동기

 

현재 설정된 일정(cronjobs)은 다음 명령으로 확인할 수 있습니다:

crontab -l
crontab: no crontab for user

이제 일정을 하나 만들어 봅시다!

Bash 스크립팅 입문

Crontab과 cronjob 구조

위키백과의 이 좋은 그림은 crontab 파일 안에 cronjob을 어떻게 구성하는지 보여줍니다. 줄마다 여러 cronjob을 넣을 수 있습니다.

Crontab 구조

  • 시간 단위별로 별 5개를 설정합니다
  • 기본값 *는 ‘매번’을 의미합니다
Bash 스크립팅 입문

Cronjob 예시

cronjob 예시를 살펴봅시다:

5 1 * * * bash myscript.sh

  • 분은 5(매 시간 5분). 시간은 1(오전 1시). 나머지 셋은 *로 매일, 매월.
    • 전체: 매일 오전 1:05 실행.

 

15 14 * * 7 bash myscript.sh

  • 분은 15(매 시간 15분). 시간은 14(오후 2시). 다음 둘은 *(매일, 매월). 마지막은 7(일요일).
    • 전체: 매주 일요일 오후 2:15 실행.
Bash 스크립팅 입문

고급 cronjob 구조

하루에 여러 번 또는 일정한 ‘X’ 간격으로 실행하는 것도 가능합니다:

  • 특정 간격은 쉼표로 구분합니다. 예:
    • 15,30,45 * * * *는 분 15, 30, 45에 실행합니다. 두 번째 별은 시간으로, 여기선 매시간, 매일 등입니다.
  • ‘매 X 간격’은 슬래시를 사용합니다. 예:
    • */15 * * * *는 15분마다 실행합니다. 역시 매시간, 매일 등입니다.
Bash 스크립팅 입문

첫 번째 cronjob

extract_data.sh 스크립트를 매일 새벽 1시 30분에 실행해 봅시다. 단계는 다음과 같습니다:

  1. 터미널에서 crontab -e로 cronjob 목록을 편집합니다.
    • 편집기를 물을 수 있습니다. nano가 vi(vim)보다 학습 곡선이 완만해 쉬운 선택입니다.
  2. cronjob을 만듭니다:
    • 30 1 * * * extract_data.sh
Bash 스크립팅 입문

첫 번째 cron job

  1. 저장하고 편집기를 종료합니다

Mac의 nano라면 ctrl + o, enter, ctrl + x 순으로 종료합니다.

crontab: installing new crontab 메시지가 표시됩니다

  1. crontab -l로 등록 여부를 확인합니다.
30 1 * * * extract_data.sh

잘하셨습니다!

Bash 스크립팅 입문

Ayo berlatih!

Bash 스크립팅 입문

Preparing Video For Download...