cron의 특징
-> 정해진 시간에 작업을 수행하므로 만약 그 시간대에 시스템이 꺼져 있을 경우 해당 작업을 다음 주기까지 실행하지 않게된다.
요일, 시, 분, 초의 단위로 지정 시각에 작업을 실행한다.
지정 시각에 서버가 정지한 경우 등에 실행하지 않은 작업을 재실행하는 기능은 없다.
(다음 차례의 지정 시각까지 기다릴 필요가 있음)
/etc/crontab, /etc/cron.d/ 이하의 파일, 각 유저의 crontab 파일등 복수의 작업 설정 장소가 있다.
데몬 프로세스(crond)가 상주하여 지정 시각에 작업을 가동한다.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
root는 뒤의 "run-parts ..."라고 나오는 명령행을 실행할 유저명이고 위의 내용들은 각각 처음부터 만들어져 있는 스크립트로서 run-parts 라는 스크립트를 이용해서 해당 디렉토리 내에 있는 모든 실행파일을 실행하도록 되어 있다.
그래서 만일 어떤 명령이 매시마다. 혹은 매일, 매주, 매달마다 실행되어야 하는 명령이라면 해당 디렉토리(/etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly, /etc/cron.weekly)에 실행파일(혹은 스크립트)을 넣어주거나 링크파일을 넣어두면 된다.
anacron의 특징
-> 정해진 시간을 주기로 작업을 수행하는 것이 아니라, 해당 작업이 정해진 시간 내에 실행된적이 있는지를 점검한 후 만약 정해진 시간내에 수행한 적이 없다면 해당 작업을 여유를 두고 실행한다.
작업의 실행 간격을 1일 단위로 지정한다.
(1일 1회 이상 실행빈도는 설ㄹ정 불가, 명시적인 실행 시각 지정 불가)
작업의 설정 장소는 /etc/anacrontab만 가능하며, 루트 유저 이외는 작업의 설정이 불가.
작업의 실행 타이밍에 랜덤으로 연장 시간이 추가된다.
데몬 프로세스가 존재하지 않으므로 정기적으로 anacron 명령어를 실행하는 구성을 따로 준비.
(cron의 매시 01분에 anacron을 실행하는 명령어가 기본으로 추가되어 있다.)
장기간 서버가 정지된 경우는 서버 가동 후에 필요한 작업을 바로 할 수 있다.
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
1라인 : 최근 1일동안 실행된 적이 있는지 점검하고, 만약 그렇지 않다면 시스템 부팅 5분 후에 수행
2라인 : 최근 7일동안 실행된 적이 있는지 점검하고, 만약 그렇지 않다면 시스템 부팅 25분 후에 수행
지연 시간을 두는 이유는 한꺼번에 실행할 경우 시스템에 과부하가 걸릴 수 있으므로 시간간격을 두어 부하를 분산하기 위함
'[개발관련] > 서버(리눅스 외)' 카테고리의 다른 글
[LINUX] root/일반 계정 su 제한, 해제하는 방법 (0) | 2020.05.08 |
---|---|
CP 명령어 옵션 (0) | 2020.05.08 |
[CentOS] su 명령어 wheel 그룹에게만 허용하기 (0) | 2020.05.08 |
CentOS8 에서 java 1.6 설치 후 에러 (Error occurred during initialization of VM ..) (0) | 2020.04.27 |
리눅스 크론 cron 실행 시 다른 계정/nologin 계정으로 실행 (0) | 2020.03.31 |