cron 시스템

Programming/linux 2007.11.28 11:09
1. cron 시스템
ㅇ 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에 기록됨.

사용자 삽입 이미지

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

ㅇ 시스템 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]#

ㅇ 각 필드의 의미
사용자 삽입 이미지

ㅇ 참고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일을 의미함.

3. 시스템 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

ㅇ 사용자 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를 등록해야 사용 가능함.

4. at 예약작업 스케줄링 활용

ㅇ 예약작업 스케줄링이란?

- 특정일, 지정된 시간에 정해진 작업을 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



위 내용은 ㈜수퍼유저코리아(www.superuser.co.kr)에 저작권이 있습니다.
원본 파일 : http://edu.phpschool.com/lecture/lec_linux_01/lec-data/10data.pdf
신고

'Programming > linux' 카테고리의 다른 글

linux 계정 lock 되는 현상.  (0) 2009.06.11
vsftpd ip 제한  (0) 2009.06.02
cron 시스템  (0) 2007.11.28
리눅스에서 svn설치  (0) 2007.11.28


티스토리 툴바