cron

Linux

0 views

1. 개요

  • cron 은 시간 기반 Job Scheduler 역할을 하는 데몬 프로세스이다.
    • 사용자가 설정한 파일(crontab)을 주기적으로 확인하여 특정 시간에 명령어나 스크립트를 자동으로 실행한다.

2. 동작 원리

2.1. crond 데몬의 작동 방식

  • 시스템이 부팅될 때 crond라는 이름의 백그라운드 프로세스가 실행된다.
    • 이 데몬은 유휴 상태로 대기하다가 매 분(Every Minute) 마다 깨어나 다음 작업을 수행한다.
  1. 설정 로드
    1. /etc/crontab, /etc/cron.d/, 그리고 각 사용자의 /var/spool/cron/crontabs/ 디렉토리를 검사한다.
  2. 시간 비교
    1. 현재 시각과 crontab 파일에 명시된 실행 시간을 비교한다.
  3. 프로세스 생성
    1. 시간이 일치하는 명령이 있다면, 해당 명령을 실행할 자식 프로세스를 생성(fork)한다.
  4. 결과 처리
    1. 실행 결과(stdout/stderr)를 시스템 메일로 발송하거나 로그 파일에 기록한다.

2.2. 환경 변수 주의점

  • cron은 사용자가 직접 로그인했을 때의 쉘 환경과 다른 최소한의 환경 변수만 가지고 실행된다.
    • PATH 문제:
      • /usr/bin, /bin 등 기본적인 경로만 포함되므로, 실행하려는 프로그램의 경로는 반드시 절대 경로 (예: /usr/local/bin/python3)로 작성해야 한다.

3. 사용법 및 구문 (Syntax)

3.1. Crontab 설정 구문

  • 설정 파일은 5개의 시간 필드와 실행할 명령어로 구성된다.

    * * * * [Command]
    ┬ ┬ ┬ ┬ ┬
    │ │ │ │ └─ 요일 (0-6, 0은 일요일)
    │ │ │ └─ 월 (1-12)
    │ │ └─ 일 (1-31)
    │ └─ 시 (0-23)
    └─ 분 (0-59)
    

3.2. 주요 명령어 예시

  • 매일 새벽 3시 30분에 백업: 30 3 * * * /usr/bin/backup.sh
  • 10분마다 실행: /10 * * * * /path/to/script.sh
  • 평일(월-금) 9시에 알림: 0 9 * * 1-5 /path/to/alert.sh

3.3. 관리 명령어

  • crontab -e: 현재 사용자의 예약 작업 편집 (Edit)
  • crontab -l: 예약된 작업 목록 확인 (List)
  • crontab -r: 예약된 모든 작업 삭제 (Remove)

Loading comments...