강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

cron시스템의 이해와 활용

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

cron시스템의 이해와 활용

작성자 : (주)수퍼유저코리아, http://www.superuser.co.kr 서버팀

cron 시스템이란?

top


○ cron 시스템이란?

- 특정 작업을 정해진 시간에 주기적이고 반복적으로 실행하기 위한 데몬과 그 설정들
- cron시스템에는 시스템에서 기본적으로 사용하는 cron설정이 있으며, 이를 시스템크론이라고 함.
- cron시스템에는 root나 일반사용자가 자신의 cron설정을 직접하여 사용하는 사용자크론이 있음.

○ 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/* (사용자계정명과 동일한 파일명으로 존재함.)
- 사용자크론설정 명령어 : /usr/bin/crontab
- cron실행내용 기록되는 로그파일 : /var/log/cron

*참고 : atd에 의한 수행내역은 /var/log/messages에 기록됨.


cron 시스템 실행 흐름도

top

 

전원 ON

init 데몬




crond 데몬실행

○ /etc/crontab 파일을 읽어들임
- /etc/cron.hourly : 매시마다 수행될 내용들 수행함.
- /etc/cron.daily : 매일 1회 수행될 내용들 수행함.
- /etc/cron.weekly : 매주 1회 수행될 내용들 수행함.
- /etc/cron.monthly : 매월 1회 수행될 내용들 수행함.

/var/spool/cron 디렉토리에 있는 파일들을 읽어들임
- 각 사용자들의 개별 cron설정파일들을 읽어들여 설정된 내용을 각 주기에 맞게 수행함.


cron에 의해 수행되지 못한 작업
anacron에 의해 수행 시도함


○ cron 로그파일에 실행기록 : /var/log/cron
- crond에 의해 수행된 수행내용 기록
- anacron에 의해 수행된 수행내용 기록
* atd에 의한 수행기록은 /var/log/messages에 기록


cron의 실행주기 설정형식과 방법

top


○ 시스템 cron설정의 예 (/etc/crontab파일의 일 부분)

[root@edu anacron]# cat /etc/crontab
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@edu anacron]#

 

○ 사용자 cron설정의 예 (root의 cron설정 예)

[root@edu anacron]# crontab -l
00 01 * * * su - root /usr/bin/rdate -s time.bora.net && /sbin/hwclock -w
00 03 * * * su - root '/root/backup.sh' >& /dev/null
00 08 * * * su - root '/root/check_of_system.sh' > /root/COS_result
[root@edu anacron]#



○ 각 필드의 의미

00 08 * * * su - root '/root/check_of_system.sh' > /root/COS_result


필드번호 의미
첫번째 필드 “분(minute)”을 의미. 0,1,2,3,,,,59분까지를 각각 설정할 수 있음.
두번째 필드 “시(hour)”를 의미. 0,1,2,3,,,,23시까지를 각각 설정할 수 있음
세번째 필드 “일(day)을 의미. 1,2,3,,,,31일까지를 각각 설정할 수 있음
네번째 필드 “월(month)을 의미. 1,2,3,,,,12월까지를 각각 설정할 수 있음
다섯번째 필드 “요일(weekday)”을 의미. 0,1,2,3,,,,7요일까지를 각각 설정할 수 있음.
(0과 7은 일요일, 1:월요일, 2:화요일, 3:수요일, 4:목요일, 5:금요일,
6:토요일을 각각 의미함.)
여섯번째 필드 실행권한과 실행될 내용을 각각 의미함

참고1 : * 기호 : 각 필드자리에 * 기호가 오면 해당 필드의 모든 값을 의미함.
- 두번째 필드에 *가 오면 매시, 세번째 필드의 *는 매일, 네번째 필드의 *는 매월을 각각 의미함.

참고2 : - 기호 : 그 사이의 모든 값을 의미함.
- 예) 두번째 필드의 “5-9”는 5시,6시,7시,8시,9시를 의미함.
- 예) 세번째 필드에 “1-5”는 1일,2일,3일,4일,5일을 의미함.

참고3 : ,(콤마)기호 : 지정한 모든 값을 의미함.(불규칙적인 값 지정시 사용)
- 예) 두번째 필드에 “1,3,4,7,8”는 1시,3시,4시,7시,8시를 의미함.
- 예) 세번째 필드에 “1,5,20”는 1일, 5일, 20일을 의미함.

○ 시스템 cron : 설치 기본값으로 시스템에 설정된 cron

[root@edu /]# cat /etc/crontab
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@edu /]#
[root@edu /]# ls -l /etc/cron.hourly/
total 0
[root@edu /]#
[root@edu /]# ls -l /etc/cron.daily/
lrwxrwxrwx 1 root root 28 Jan 23 01:30 00-logwatch -> ../log.d/scripts/logwatch.pl
-rwxr-xr-x 1 root root 135 Mar 4 2005 00webalizer
-rwxr-xr-x 1 root root 276 Mar 17 2005 0anacron
-rwxr-xr-x 1 root root 180 Apr 1 2005 logrotate
-rwxr-xr-x 1 root root 104 May 25 2005 rpm
-rwxr-xr-x 1 root root 246 Apr 17 2005 slocate.cron
-rwxr-xr-x 1 root root 158 May 26 2005 yum.cron
[root@edu /]#
[root@edu /]# ls -l /etc/cron.weekly/
-rwxr-xr-x 1 root root 277 Mar 17 2005 0anacron
-rwxr-xr-x 1 root root 414 Apr 8 2005 makewhatis.cron
-rwxr-xr-x 1 root root 90 May 26 2005 yum.cron
[root@edu /]#
[root@edu /]# ls -l /etc/cron.monthly/
-rwxr-xr-x 1 root root 278 Mar 17 2005 0anacron
[root@edu /]#

○ 사용자 cron 의미

- 개별 사용자가 자신의 cron설정을 개별적으로 할 수 있음.
- 개별 사용자의 cron설정파일은 /var/spool/cron 디렉토리내에 자신의 ID와 동일한 파일로 생성됨

[root@edu /]# ls -l /var/spool/cron
total 16
-rw------- 1 root bible 60 Feb 15 13:07 bible
-rw------- 1 root root 195 Feb 15 12:44 root
[root@edu /]#

○ 사용자 cron 설정시 사용명령어(crontab)
- 개별사용자의 cron설정 방법 : crontab ?e
- 개별사용자의 cron설정 확인 방법 : crontab ?l
- 개별사용자의 cron설정 삭제 방법 : crontab ?r
- root의 일반사용자 cron설정 방법 : crontab ?u 사용자명 ?e
- root의 일반사용자 cron설정 확인 방법 : crontab ?u 사용자명 ?l
- root의 일반사용자 cron설정 삭제 방법 : crontab ?u 사용자 -r

○ cron 사용허가(불허가) 설정파일
- /etc/cron.allow 파일 : 이 파일에 등록된 사용자는 crontab으로 cron설정가능함.
- /etc/cron.deny 파일 : 이 파일에 등록된 사용자는 crontab으로 cron설정 불가능함
- 설치초기 값으로는 이 두 파일은 존재하지 않음. 따라서 필요시 생성해야 함.
- 설정방법은 한 행에 하나의 ID씩 기재하면 됨.
- 두 파일이 모두 존재하지 않으면 root만 가능.
- 만약 /etc/cron.allow파일을 만들었다면 root라도 이 파일에 root를 등록해야 사용 가능함.



at 예약작업 스케줄링 활용

top


○ 예약작업 스케줄링이란?
- 특정일, 지정된 시간에 정해진 작업을 1회 수행하도록 하는 것.
- 주기적, 반복적 수행을 하는 cron과는 그 성격이 다름.

○ 예약작업 스케줄링에 사용되는 명령어
- 예약작업 수행 데몬 : atd
- 예약작업 설정 : at (또는 가끔씩 batch를 사용하기도 함.)
- 예약작업 확인 : at ?l 또는 atq
- 예약작업 취소 : at ?d 또는 atrm
- 예약작업 즉시 실행 : at ?s 또는 atrun

○ 예약작업 수행될 작업 목록 저장 위치 : /var/spool/at

○ at로 예약작업을 수행할 수 있는 권한 설정파일 : /etc/at.allow, /etc/at.deny
- /etc/at.allow파일만 존재하면 이 파일에 설정된 사용자만 사용가능
- /etc/at.deny파일만 존재한다면 이 파일에 설정된 사용자외 모두 사용가능
- /etc/at.allow, /etc/at.deny 모두 존재하지 않는다면 root만 사용가능
- /etc/at.allow, /etc/at.deny 모두 존재하지만 내용이 모두 없다면 모든 사용자가 사용가능.

○ atd데몬 시작/종료/재시작 : /etc/rc.d/init.d/atd start/stop/restart

○ atd에 의해 수행된 로그기록 : /var/log/messages


 
copyright.gif

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,034 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  89 명