🔍 크론탭이란?
크론탭(Crontab) 은 유닉스/리눅스 시스템에서 주기적인 작업을 자동화하는 스케줄링 도구입니다. “Cron Table”의 약자로, 특정 시간에 명령어나 스크립트를 실행하도록 설정하는 설정 파일을 의미해요.
- ⏰ 크론 데몬(crond) 이 백그라운드에서 동작하며 설정된 스케줄을 감시
- 📅 분, 시, 일, 월, 요일 5개 필드로 시간 표현
- 💡 시스템 관리, 데이터 백업, 로그 정리 등 반복 작업에 필수적!
📜 크론탭 기본 구조
크론탭 한 줄은 시간 설정 + 실행 명령어로 구성됩니다.
* * * * * 실행할_명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └─ 요일 (0-6, 0=일요일)
│ │ │ └─── 월 (1-12)
│ │ └───── 일 (1-31)
│ └─────── 시 (0-23)
└───────── 분 (0-59)
🎯 시간 표현법
패턴 | 의미 | 예시 |
---|---|---|
* |
매번 | * * * * * = 매분 |
, |
복수 값 지정 | 0,30 * * * * = 0분과 30분 |
- |
범위 지정 | 0 9-18 * * * = 오전 9시~6시 매시 정각 |
*/n |
n 간격으로 반복 | */15 * * * * = 15분마다 |
@reboot |
시스템 부팅 시 1회 실행 | @reboot /path/script.sh |
🛠️ 크론탭 사용 방법
1. 크론탭 편집하기
crontab -e # 크론탭 편집 모드 진입
- 최초 실행 시 기본 에디터 선택 (보통
nano
또는vim
)
2. 현재 크론탭 목록 확인
crontab -l # 현재 사용자의 크론탭 목록 출력
3. 크론탭 삭제
crontab -r # 전체 크론탭 삭제 (⚠️ 복구 불가!)
💡 주의사항 & 실무 팁
- 경로 문제
- 절대 경로 사용 권장:
* * * * * /home/user/backup.sh # ✅ * * * * * backup.sh # ❌ (실패 가능성 높음)
- 절대 경로 사용 권장:
- 출력 리다이렉션
- 출력이 있을 경우
/dev/null
로 방향 지정:* * * * * /script.sh > /dev/null 2>&1
- 출력이 있을 경우
- 환경 변수
- 스크립트 내에서 필요한 변수는 파일 내 상단에 선언:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/bin
- 스크립트 내에서 필요한 변수는 파일 내 상단에 선언:
- 권한 관리
- 시스템 전체 크론:
/etc/crontab
(root 권한 필요) - 사용자별 크론:
crontab -e
- 시스템 전체 크론:
🚀 실전 예제 모음
- 매일 자정 백업
0 0 * * * /usr/bin/backup_db.sh # 🕛 00:00에 실행
- 주말마다 로그 정리
0 3 * * 6,0 /clean_logs.sh # 🗑️ 토/일요일 AM 3:00
- 업무 시간 알림
0 9-18 * * 1-5 /send_alert.sh # 💼 월~금 9AM~6PM 매시 정각
- 5분 간격 모니터링
*/5 * * * * /monitor_server.sh # 📊 5분마다 실행
⚠️ 크론탭 오류 디버깅
- 로그 확인
grep CRON /var/log/syslog # 우분투 grep CRON /var/log/cron # CentOS
- 명령어 테스트
- 크론 환경과 동일하게 테스트:
env -i /bin/bash --noprofile --norc /path/to/your_script.sh
- 크론 환경과 동일하게 테스트:
✅ 마무리
크론탭은 서버 관리의 핵심 자동화 도구입니다. 초기 설정만 완료하면 반복 작업에서 해방되죠! ✨
- 🔄 정기적 실행:
anacron
으로 부팅 후 작업 보완 가능 - 🛡️ 안전 장치:
flock
으로 중복 실행 방지 추천
> “크론탭을 마스터하면 하루 24시간 일하는 효율적인 어시스턴트를 얻는 것과 같습니다!”
⏰ 지금 바로 crontab -e
로 첫 스케줄을 등록해 보세요! D