1. cron
1️⃣ cron이란?
1) 개념
- “컴퓨터에게 이 시간마다 이 작업 해줘 라고 예약하는 기능”
- 정해진 시간에 자동으로 작업을 실행해주는 스케줄러
2) 예
- 매일 아침 9시에 프로그램 실행
- 5분마다 로그 정리
- 매주 월요일 자동 백업
2️⃣ cron의 구성 요소
1) cron 서비스
- 리눅스에서 항상 백그라운드에서 실행됨
- 예약된 작업을 체크하고 실행함
2) crontab (설정 파일)
- “어떤 작업을 언제 실행할지 적는 곳”
- 명령어
crontab -e # 수정
crontab -l # 확인
crontab -r # 삭제3️⃣ cron 시간 표현 (핵심)
1) 시간 표현
- cron은 아래 5개 시간 필드로 구성됨
분 시 일 월 요일 실행할명령어
위치 | 의미 | 값 범위 |
1 | 분 | 0~59 |
2 | 시 | 0~23 |
3 | 일 | 1~31 |
4 | 월 | 1~12 |
5 | 요일 | 0~7 (0,7=일요일) |
🔥 가장 중요한 규칙
① 특정 값
0 9 * * * 명령어- 매일 9시 0분 실행
② * (모든 값)
* * * * * 명령어- 1분마다 실행
③ 간격 ( / )
*/5 * * * * 명령어- 5분마다 실행
④ 범위 ( - )
0 9-18 * * * 명령어- 9시부터 18시까지 매시간 실행
⑤ 여러 값 ( , )
0 9,12,18 * * * 명령어- 9시, 12시, 18시에 실행
4️⃣ 자주 쓰는 예시 (실전)
✔️ 매일 자정 실행
0 0 * * * /home/user/backup.sh
✔️ 10분마다 실행
*/10 * * * * /home/user/script.sh
✔️ 매주 월요일 오전 9시
0 9 * * 1 /home/user/report.sh
✔️ 서버 재부팅 시 실행
@reboot /home/user/start.sh
5️⃣ 실습 코드 + 해석
1) Dockerfile
FROM ubuntu
RUN apt-get update && \
apt-get install -y nano && \
apt-get install -y cron
COPY scripts/ /scripts/
RUN chmod +x /scripts/*.sh
RUN crontab /scripts/crontab.txt
CMD ["cron", "-f"]- cron 실행 환경을 가진 이미지 생성
FROM ubuntu- 우분투 리눅스 기반 이미지 선택
RUN apt-get update && \ apt-get install -y nano && \ apt-get install -y cron- 패키지 설치 (nano: 텍스트 편집기, cron: 예약 실행 프로그램)
COPY scripts/ /scripts/- 내 컴퓨터 → 컨테이너로 파일 복사
RUN chmod +x /scripts/*.sh- 쉘 스크립트 실행 가능하게 권한 부여
RUN crontab /scripts/crontab.txt- crontab 등록 (미리 작성된 스케줄 적용)
CMD ["cron", "-f"]- cron 실행 명령 (컨테이너 유지)
2) 이미지 빌드
docker build -t cron-tutorial .
- Dockerfile로 이미지 생성
- 이름: cron-tutorial
3) 컨테이너 실행
docker run -d --name cron-test cron-tutorial
- 백그라운드 실행
- 이름: cron-test
4) 컨테이너 접속
docker exec -it cron-test bash- 컨테이너 내부로 들어가기
5) crontab 관리
crontab -l
- 현재 작업 목록 확인
crontab -e
- 수정
crontab -r
- 삭제
6) cron 작업 등록
*/1 * * * * /scripts/hello.sh >> /var/log/cron.log
- 1분마다 실행
- 결과를 로그 파일에 저장
7) 로그 확인
tail -f /var/log/cron.log- 실행 결과 실시간 확인
8) 컨테이너 밖에서 로그 확인
docker exec -it cron-test tail -f /var/log/cron.log- 컨테이너 내부 로그를 외부에서 확인
6️⃣ 초보자가 자주 틀리는 포인트
1) 경로는 반드시 전체 경로
❌ 잘못된 예
python script.py
✅ 올바른 예
/usr/bin/python3 /home/user/script.py
2) 환경 변수 없음
- cron은 일반 터미널 환경과 다름
⬇️ 해결
PATH=/usr/bin:/bin
3) 로그 확인 필수
- 디버깅용
*/5 * * * * /script.sh >> /log.txt 2>&1
7️⃣ 구조 요약 (한눈에)
[시간 설정] + [실행할 명령어]- 예
*/5 * * * * /home/user/test.sh8️⃣ 쉽게 기억하는 방법
- cron = 알람 맞춰놓는 것
상황 | cron으로 표현 |
매일 | * |
특정 시간 | 숫자 |
반복 | */숫자 |
여러개 | |
범위 | - |
9️⃣ 핵심 요약 (시험 대비용)
- cron = 리눅스 작업 자동 실행 도구
- crontab = 설정 파일
- 시간은 분 시 일 월 요일 순서
- = 모든 값
/= 간격
,= 여러 값
- = 범위
Share article