서버를 운영하다 보면 매일 특정 시간에 데이터베이스를 백업하거나, 매주 월요일마다 임시 파일을 정리해야 하는 상황이 생깁니다. 이런 반복적인 작업을 사람이 일일이 수동으로 하는 것은 비효율적일 뿐만 아니라 실수할 위험도 큽니다.
리눅스 시스템에는 이러한 작업을 예약하고 자동으로 실행해 주는 **크론(Cron)**이라는 강력한 도구가 있습니다. 오늘은 크론의 설정 파일인 **크론탭(Crontab)**의 문법부터 실전 활용 사례까지 상세히 알아보겠습니다.
1. 크론탭(Crontab)이란 무엇인가?
**크론(Cron)**은 리눅스용 시간 기반 잡 스케줄러입니다. 그리고 **크론탭(Crontab)**은 크론 작업(Cron Job)을 설정하는 테이블(Table) 형태의 파일을 말합니다.
사용자가 크론탭에 특정 시간과 실행할 명령어를 등록해 두면, 시스템은 백그라운드에서 대기하다가 정해진 시간에 맞춰 해당 명령을 자동으로 수행합니다.
2. 크론탭 기본 명령어
터미널에서 크론탭을 관리하기 위한 기본 명령어 3가지는 다음과 같습니다.
- crontab -e: 크론탭 설정을 편집합니다. (가장 많이 사용)
- crontab -l: 현재 예약된 크론 작업 목록을 출력합니다.
- crontab -r: 예약된 모든 크론 작업을 삭제합니다. (주의해서 사용)
3. 크론탭 주기 설정 문법 (별 5개의 의미)
크론탭 설정은 한 줄에 5개의 시간 단위와 실행할 명령어를 공백으로 구분하여 작성합니다.
* * * * * [실행할 명령어]
┬ ┬ ┬ ┬ ┬
│ │ │ │ └─ 요일 (0-6, 0:일요일)
│ │ │ └─ 월 (1-12)
│ │ └─ 일 (1-31)
│ └─ 시 (0-23)
└─ 분 (0-59)
3.1 실전 설정 예시
- 매분 실행: * * * * * /path/to/script.sh
- 매일 새벽 3시에 실행: 0 3 * * * /path/to/backup.sh
- 매주 월요일 오전 9시에 실행: 0 9 * * 1 /path/to/report.sh
- 10분마다 실행: */10 * * * * /path/to/check.sh
- 평일(월~금) 오후 6시에 실행: 0 18 * * 1-5 /path/to/work.sh
4. 크론탭 작성 시 주의사항 (트러블슈팅)
초보자들이 크론탭을 설정하고 가장 당황하는 순간은 "명령어가 제대로 실행되지 않을 때"입니다. 이를 방지하기 위한 팁입니다.
4.1 절대 경로 사용
크론은 일반적인 터미널 환경과 환경 변수(PATH)가 다릅니다. 따라서 python이나 node 같은 명령어를 쓸 때도 반드시 절대 경로를 사용해야 합니다.
- 잘못된 예: python3 script.py
- 올바른 예: /usr/bin/python3 /home/user/script.py
4.2 실행 로그 남기기
크론은 백그라운드에서 돌아가기 때문에 성공 여부를 알기 어렵습니다. 리다이렉션을 사용해 로그를 남기는 습관을 들이세요.
0 3 * * * /home/user/backup.sh >> /home/user/logs/cron.log 2>&1
4.3 권한 확인
실행하려는 스크립트 파일(.sh 등)에 실행 권한(chmod +x)이 있는지 확인해야 합니다.
5. 실전 활용 사례: DB 자동 백업 및 로그 정리
서버 관리자가 가장 흔히 사용하는 자동화 조합입니다.
# 매일 밤 12시에 DB 백업 스크립트 실행
0 0 * * * /home/user/scripts/db_backup.sh
# 매주 일요일 새벽 4시에 7일 지난 임시 파일 삭제
0 4 * * 0 find /tmp -mtime +7 -delete
6. 결론: 자동화로 서버 관리의 자유를 찾으세요
크론탭은 한 번 제대로 설정해 두면 서버가 돌아가는 동안 묵묵히 제 역할을 수행하는 든든한 조수입니다. 반복 업무를 자동화함으로써 여러분은 더 중요한 개발 업무에 집중할 수 있는 시간을 벌게 됩니다.