리눅스 CRON 설정 한방 정리
CRON(크론)은 리눅스에서 정해진 시간에 자동으로 명령을 실행해주는 “예약 실행” 기능입니다.
예: 매일 새벽 3시에 로그 백업, 매주 일요일에 업데이트 점검, 5분마다 서버 상태 체크 등.
1) CRON 구성 요소: crond + crontab
-
crond(데몬): 스케줄을 실제로 돌려주는 백그라운드 서비스
-
crontab(설정 파일): 언제(주기) 무엇(명령)을 실행할지 적는 표
2) 크론 시간 문법(핵심 5칸)
CRON은 아래 5개 필드로 시간을 표현합니다.
분(Min) 시(Hour) 일(Day) 월(Month) 요일(Weekday) 실행할_명령
| 필드 | 범위 | 예 |
|---|---|---|
| 분 | 0~59 | 0, 5, 30 |
| 시 | 0~23 | 0(자정), 3(새벽3시) |
| 일 | 1~31 | 1, 15 |
| 월 | 1~12 | 1(1월), 12(12월) |
| 요일 | 0~7 | 0/7=일, 1=월 … 6=토 |
3) 특수 기호(시험/실무 필수)
| 기호 | 의미 | 예시 |
|---|---|---|
* |
“매번” | * * * * * = 매 1분마다 |
, |
여러 값 | 1,15 = 1일과 15일 |
- |
범위 | 1-5 = 1~5 |
/ |
간격(주기) | */5 = 5분마다 |
4) 예제로 바로 이해하기
✅ 매일 새벽 3시 0분에 실행
0 3 * * * /path/script.sh
✅ 5분마다 실행
*/5 * * * * /path/health_check.sh
✅ 평일(월~금) 오전 9시에 실행
0 9 * * 1-5 /path/workday_job.sh
✅ 매달 1일 00:10에 실행
10 0 1 * * /path/monthly_report.sh
5) crontab 명령어(자주 쓰는 것만)
| 명령 | 설명 |
|---|---|
crontab -e |
내 크론 편집 |
crontab -l |
내 크론 목록 보기 |
crontab -r |
내 크론 전부 삭제(주의) |
6) “안 돌아가요” 체크리스트(실수 TOP)
-
경로 문제: 크론은 PATH가 짧아서
python,bash가 안 잡힐 수 있어요 → 절대경로 권장 -
권한 문제: 스크립트 실행 권한 필요
-
예:
chmod +x /path/script.sh
-
-
로그 미남김: 결과를 파일로 남기면 디버깅이 쉬워요
-
예:
... >> /var/log/myjob.log 2>&1
-
-
환경변수 미적용: bashrc/profile이 안 읽힐 수 있음
7) 보안 관점 포인트(정보보안기사 느낌!)
CRON은 편하지만, 보안적으로는 “자동 실행 경로”라서 관리가 중요합니다.
-
권한 최소화: 가능하면 root 크론 대신 일반 사용자 크론 사용
-
스크립트/디렉터리 권한 점검
-
크론이 실행하는 스크립트가 다른 사용자에게 쓰기 권한이 있으면 위험(변조 후 자동 실행 가능)
-
-
로그/감사: 중요한 작업은 실행 로그를 남기기
-
크론 파일 위치/관리
-
시스템 크론:
/etc/crontab,/etc/cron.d/,/etc/cron.daily/등 -
사용자 크론:
crontab -e로 관리(시스템이 내부 위치에 저장)
-
시험식 한 줄 요약:
CRON은 주기적 작업 자동화를 제공하지만, 권한/경로/변조 위험 관리가 핵심이다.