Crontab(Cron table)은 리눅스 및 유닉스 계열 운영체제에서 특정 시간에 주기적으로 작업을 실행하기 위해 사용하는 시간 기반 잡 스케줄러(Job Scheduler)입니다. 백업, 로그 정리, 주기적인 데이터 수집 등 반복적인 업무를 자동화하는 데 필수적인 도구입니다.
Crontab 설정은 5개의 시간 설정 필드와 실행할 명령어로 구성됩니다.
* * * * * 명령어(Command)
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 요일 (0 - 6) (0: 일요일, 1: 월요일, ..., 6: 토요일)
│ │ │ └─ 월 (1 - 12)
│ │ └─ 일 (1 - 31)
│ └─ 시 (0 - 23)
└─ 분 (0 - 59)
*: 모든 값 (매 분, 매 시, 매일 등),: 여러 값 지정 (예: 1,3,5는 1, 3, 5에 실행)-: 범위 지정 (예: 1-5는 1부터 5까지 실행)/: 증분값 지정 (예: */10은 10분마다 실행)터미널에서 다음 명령어를 통해 크론탭을 관리할 수 있습니다.
crontab -e: 현재 사용자의 크론탭 파일을 편집합니다.crontab -l: 현재 예약된 작업 목록을 출력합니다.crontab -r: 현재 사용자의 모든 크론 설정을 삭제합니다.* * * * * /path/to/script.sh
30 3 * * * /path/to/backup.sh
0 9 * * 1-5 /path/to/work-report.sh
*/10 * * * * /path/to/check-status.sh
crontab -e를 통한 직접 편집 외에도, 파일에 설정 내용을 작성해두고 한 번에 등록하거나 쉘 스크립트를 통해 자동화할 수 있습니다.
설정 내용을 담은 텍스트 파일을 작성한 후, 해당 파일을 인자로 넘기면 크론탭 내용이 해당 파일로 교체됩니다.
# cron_jobs.txt 파일 내용으로 현재 크론탭 교체
crontab cron_jobs.txt
기존 설정을 유지하면서 새로운 작업을 스크립트로 추가하고 싶을 때 유용합니다.
# 기존 리스트를 불러와서 새로운 줄을 추가한 뒤 다시 등록
(crontab -l ; echo "0 5 * * * /path/to/new-job.sh") | crontab -
일괄 등록 작업 전에는 항상 현재 설정을 백업해두는 것이 좋습니다. ```bash
crontab -l > my_cron_backup.txt
crontab my_cron_backup.txt