반응형
crontab은 리눅스나 유닉스 계열 시스템에서 특정 명령어나 스크립트를 정해진 시간에 자동으로 실행하기 위한 스케줄러 도구입니다. 서버에서 정기적으로 백업, 로그 정리, 데이터 동기화, 알림 발송 등을 자동화할 때 자주 사용됩니다.
🧩 기본 개념
- cron: 백그라운드에서 동작하는 데몬(demon)으로, 설정된 스케줄에 맞춰 작업을 수행합니다.
- crontab (cron table): 사용자가 원하는 작업을 예약하는 “표(table)” 형식의 설정 파일입니다.
각 사용자는 자신의 crontab 파일을 가질 수 있으며, 시스템 전체용(crontab -e root 등)도 존재합니다.
🕐 crontab 문법 구조
기본 구조는 다음과 같습니다:
* * * * * 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └── 요일 (0-7, 0과 7은 일요일)
│ │ │ └──── 월 (1-12)
│ │ └────── 일 (1-31)
│ └──────── 시 (0-23)
└────────── 분 (0-59)
예시:
0 2 * * * /usr/local/bin/backup.sh
→ 매일 새벽 2시에 /usr/local/bin/backup.sh 스크립트를 실행.
⚙️ 주요 명령어
명령어 설명
| crontab -e | 현재 사용자의 crontab 편집 |
| crontab -l | 현재 사용자의 crontab 목록 보기 |
| crontab -r | 현재 사용자의 crontab 삭제 |
| sudo crontab -e -u 사용자명 | 특정 사용자용 crontab 편집 |
🧭 스케줄 예시
스케줄 설명
| * * * * * | 매분마다 |
| 0 * * * * | 매시 정각마다 |
| 0 0 * * * | 매일 자정에 |
| 0 9 * * 1-5 | 월~금 오전 9시에 |
| */10 * * * * | 10분 간격으로 |
| 0 22 * * 1,5 | 월요일과 금요일 밤 10시에 |
🧾 로그 및 디버깅
- 크론 작업의 출력(stdout, stderr)은 기본적으로 이메일로 전송됩니다.
- 로그 확인:
- grep CRON /var/log/syslog
- 출력 결과를 파일로 남기려면:
- 0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
🚀 자주 쓰는 팁
- 환경 변수 설정 (PATH가 다를 수 있음):
- PATH=/usr/local/bin:/usr/bin:/bin
- 특수 문자열을 이용한 간편 설정:예:
- @reboot /home/ubuntu/start_service.sh
- @reboot : 시스템 부팅 시 실행 @hourly : 매시간 @daily : 매일 @weekly : 매주 @monthly : 매월 @yearly : 매년
💡 예시 시나리오
- 매일 로그 백업→ 매일 새벽 1시에 로그 폴더를 압축해 백업.
- 0 1 * * * tar -czf /backup/logs_$(date +\%Y\%m\%d).tar.gz /var/log/
- 서버 재시작 감시
- @reboot echo "Server restarted at $(date)" >> /var/log/reboot.log
반응형
'[======= 지식 저장소 =======]' 카테고리의 다른 글
| 조니워커 위스키, 세계가 사랑한 스카치의 상징 (0) | 2025.10.18 |
|---|---|
| Crontab 샘플 (0) | 2025.10.17 |
| 통화스와프란? 쉽게 이해하는 개념과 실제 사례 (0) | 2025.10.13 |
| 프리미어리그 완벽 정리: 세계 최고의 축구 리그가 만들어낸 전설과 역사 (0) | 2025.10.11 |
| 강박증, 불안을 이겨내는 마음의 치유법 (0) | 2025.10.11 |