Cron? 크론 표현식 알아보기
껄껄껄
코딩무새입니다.
블로그명이 코딩무새인데 IT와 개발에 대한 글을 안쓸순 없죠.
IT무새 첫 포스팅으로 어떤 주제로 내용을 작성할까 고민했습니다.
결국 내용이 중요한거 아니겠습니까?
그래서 크론(CRON) 표현식에 대해서 내용을 써봤습니다.
CRON?
크론이 뭘까요? 자세한 내용은 여기 있습니다.
하지만 코딩무새의 설명을 아래 작성해봅니다.
크론은 리눅스와 유닉스 계열 시스템에서 일정한 시간 간격으로 작업을 실행하기 위한 스케줄링 도구인데요. 크론을 제대로 활용하면 반복적인 작업을 자동화하여 시간을 절약하고 효율성을 극대화할 수 있지요. 크론 작업은 크론탭(crontab) 파일에 정의되며, 이 파일은 사용자가 원하는 작업과 실행 시점을 지정하게 됩니다.
Cron 구조
기본 필드
크론탭 파일은 각 작업의 실행 시간을 설정하기 위해 특정 형식을 따르는데요.
아래 일곱 가지 필드로 구성됩니다. 옵션 필드들은 값을 넣지 않아도 됩니다. ( 분 시간 일 월 요일 )
- 초 (0-59) ( option )
- 분 (0-59)
- 시간 (0-23)
- 일 (1-31)
- 월 (1-12)
- 요일 (0-6 or SUN-SAT)
- 년 ( 1970-2099 ) ( option )
예:
- 0 5 * * *: 매일 오전 5시에 실행
- 30 8 1 * *: 매달 1일 오전 8시 30분에 실행
특수문자
크론에서 사용할 수 있는 특수문자로 반복 작업의 유연성을 극대화 시켜줍니다.
- *: 모든 값을 의미
- ,: 여러 값을 지정
- -: 범위를 지정
- /: 간격을 지정
예:
- */15 * * * *: 매 15분마다 실행
- 0 0 * * 1-5: 월요일부터 금요일까지 매일 자정에 실행
샘플코드
그럼 정말 심플하게 한번 crontab을 활용해볼까요.
Env: ubuntu
Lang: python
아래 심플한 코드가 있습니다.
from datetime import datetime
now = datetime.now()
print("Cron executed: Coding Parrot: ", now)
크론탭을 수정해보죠.
crontab -e
여기에 [크론 표현식 / 파이썬 경로 / 코드 경로 / 생성할 로그 위치] 순서로 추가해줍니다.
파이썬 경로는 아래 명령어로 확인하세요.
which python3
매 1분마다 로그가 쌓이도록 설정해보았습니다.
*/1 * * * * /usr/bin/python3 /home/my-folder/cron-coding-parrot/cron-test.py >> /home/my-folder/cron-coding-parrot/cron-output.log 2>&1
저장 후 바로 스케줄러가 실행되고 log 파일이 생성됩니다.
Cron executed: Coding Parrot: 2025-01-06 02:44:01.974317
Cron executed: Coding Parrot: 2025-01-06 02:45:01.985061
Cron executed: Coding Parrot: 2025-01-06 02:46:01.995973
Cron executed: Coding Parrot: 2025-01-06 02:47:02.006349
Cron executed: Coding Parrot: 2025-01-06 02:48:02.017005
Cron executed: Coding Parrot: 2025-01-06 02:49:01.027700
Cron executed: Coding Parrot: 2025-01-06 02:50:01.037996
Cron executed: Coding Parrot: 2025-01-06 02:51:01.048676
이미지들...
스케줄러 해제는 작성한 내용을 주석 처리 해주면 됩니다.
참 쉽죠~
크론은 단순하면서도 강력한 도구로, 이해하고 사용하면 반복 작업을 손쉽게 작업 할 수 있습니다.
처음 접한다면 다소 복잡하게 느껴질 수 있지만, 패턴과 구조를 이해하고 몇 가지 실습을 해보면 금방 익숙해질겁니다.
그것이 개발이니까요. 껄껄껄