5. cron

박은서's avatar
Apr 09, 2026
5. cron

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.sh
    • “5분마다 test.sh 실행”

8️⃣ 쉽게 기억하는 방법

  • cron = 알람 맞춰놓는 것
상황
cron으로 표현
매일
*
특정 시간
숫자
반복
*/숫자
여러개
범위
-

9️⃣ 핵심 요약 (시험 대비용)

  • cron = 리눅스 작업 자동 실행 도구
  • crontab = 설정 파일
  • 시간은 분 시 일 월 요일 순서
  • = 모든 값
  • / = 간격
  • , = 여러 값
  • = 범위
 
Share article