Cron
특정 작업을 정해진 시간에 주기적이고 반복적으로 실행하기 위한 데몬과 그 설정들.
- cron시스템에는 시스템에서 기본적으로 사용하는 cron설정이 있으며, 이를 시스템크론이라고 함.
- cron시스템에는 root나 일반사용자가 자신의 cron설정을 직접하여 사용하는 사용자크론이 있음.
Categories
- Cron:Examples:LogFileRotate - 날짜별로 로그파일 자동 분할 crontab 예제.
- croniter - datetime 객체를 반복하기 위해 cron 일정을 구문 분석합니다.
Usage
작업 스케쥴을 설정할때는 다음의 순서로 입력하면 된다. (구분자는 공백 이다)
- 분 (Minute): 0-59 값을 가진다.
- 시 (Hour): 0-23 값을 가진다.
- 일 (Day of month): 1-31 값을 가진다.
- 월 (Month): 1-12 값을 가진다.
- 요일 (Day of week): 0-7 값을 가진다. 0 또는 7은 모두 일요일이다. 영문 이름을 사용해도 된다.
- 명령문
예를 들어, 매주 월요일 오전 5시에 tar를 사용하여 모든 사용자 계정을 백업하고자 한다면:
crontab 작업의 출력(오류 포함)은 crontab 파일이 속한 사용자에게 이메일을 통해 전송된다. 메일 파일 경로는 /var/mail/$USER 이다.
-
*- 모든 값을 뜻합니다. -
?- 특정한 값이 없음을 뜻합니다. -
-- 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현 -
,- 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI -
/- 시작시간 / 단위 (예) 0분부터 매 5분 0/5 -
L- 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일) -
W- 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음 -
#- 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일
cron에 관한 데몬과 파일들
- cron데몬파일:
/usr/sbin/crond - cron데몬의 시작/종료/재시작:
/etc/rc.d/init.d/crond start/stop/restart - crond 실행확인:
ps -ef | grep crond - cron설정파일:
/etc/crontab - 시스템크론 설정디렉토리:
/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly - 사용자크론 설정파일:
/var/spool/cron/*1-
crontab -e명령을 사용한 사용자 크론 설정 파일 위치:/var/spool/cron/crontabs/*
-
/usr/bin/crontab /var/log/cron 사용자 스케줄 편집
vim을 사용하여 cron 스케줄을 편집:
스케줄 확인
현제 설정된 스케줄을 보고 싶으면 아래와 같은 방법으로 확인할 수 있다.
시간 설정 방법
편집기 열기:
문법은 다음과 같다:
* * * * * <명령어>
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일, *:매일)
│ │ │ └───────── 월 (1 - 12) (*:매월)
│ │ └───────── 일 (1 - 31) (*:매일)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
-
0 0 * * * - 매일 정각(0시 0분)에 실행
-
10 1 * * * - 매일 1시 10분에 실행
-
0 1,12,18 * * * - 매일 1시, 12시, 18시
-
0 0 1-10 * * - 1일 ~ 10일 정각
-
* * * * * - 1분에 한번씩 계속
-
*/10 * * * * - 10분에 한번씩 계속
-
0 0 1-10,15 * * - 매달 1일 ~ 10일, 그리고 15일 정각(00:00)에 실행
-
0 0 * * 0 - 매주 일요일 정각
See also
- anacron: 비 연속적인 시스템 가동을 위한 cron.
- at, atd: 한번만 정해진 시간에 기동한다.
- logrotate
- ciao - 간단한 서버 HTTP 모니터링 도구
- autorun
- Gaze - 파일 저장할 때마다 명령 실행하기
- async_cron (python)
- aiocron (python)
- Croner - Cron for JavaScript/TypeScript
- Cronicle - 단순/분산 작업 스케줄러(웹 기반 Cron)