0 views
1. 개요
- cron 은 시간 기반 Job Scheduler 역할을 하는 데몬 프로세스이다.
- 사용자가 설정한 파일(crontab)을 주기적으로 확인하여 특정 시간에 명령어나 스크립트를 자동으로 실행한다.
2. 동작 원리
2.1. crond 데몬의 작동 방식
- 시스템이 부팅될 때
crond라는 이름의 백그라운드 프로세스가 실행된다.- 이 데몬은 유휴 상태로 대기하다가 매 분(Every Minute) 마다 깨어나 다음 작업을 수행한다.
- 설정 로드
/etc/crontab,/etc/cron.d/, 그리고 각 사용자의/var/spool/cron/crontabs/디렉토리를 검사한다.
- 시간 비교
- 현재 시각과
crontab파일에 명시된 실행 시간을 비교한다.
- 현재 시각과
- 프로세스 생성
- 시간이 일치하는 명령이 있다면, 해당 명령을 실행할 자식 프로세스를 생성(fork)한다.
- 결과 처리
- 실행 결과(stdout/stderr)를 시스템 메일로 발송하거나 로그 파일에 기록한다.
2.2. 환경 변수 주의점
cron은 사용자가 직접 로그인했을 때의 쉘 환경과 다른 최소한의 환경 변수만 가지고 실행된다.- PATH 문제:
/usr/bin,/bin등 기본적인 경로만 포함되므로, 실행하려는 프로그램의 경로는 반드시 절대 경로 (예:/usr/local/bin/python3)로 작성해야 한다.
- PATH 문제:
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...