inblog logo
|
DailyCoding
    Linux

    5. cron

    박은서's avatar
    박은서
    Apr 09, 2026
    5. cron
    Contents
    1. cron1️⃣ cron이란?2️⃣ cron의 구성 요소3️⃣ cron 시간 표현 (핵심)4️⃣ 자주 쓰는 예시 (실전)5️⃣ 실습 코드 + 해석6️⃣ 초보자가 자주 틀리는 포인트7️⃣ 구조 요약 (한눈에)8️⃣ 쉽게 기억하는 방법9️⃣ 핵심 요약 (시험 대비용)

    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
    Contents
    1. cron1️⃣ cron이란?2️⃣ cron의 구성 요소3️⃣ cron 시간 표현 (핵심)4️⃣ 자주 쓰는 예시 (실전)5️⃣ 실습 코드 + 해석6️⃣ 초보자가 자주 틀리는 포인트7️⃣ 구조 요약 (한눈에)8️⃣ 쉽게 기억하는 방법9️⃣ 핵심 요약 (시험 대비용)

    DailyCoding

    RSS·Powered by Inblog