
[ cron 이란 ? ]
특정 시간에 특정한 작업을 수행할 수 있게 해주는 프로그램이다.
대부분의 리눅스 배포판에 기본적으로 설치되어 있다.
내가 만약 매일 새벽 5시에 DB 백업을 받아야 한다고 가정한다면, 매일 DB 백업을
받기 위해 새벽 5시에 출근할 수는 없는 일이다. 이럴때 CRON 으로 작업을 스케줄링 해 놓
으면 cron 데몬이 알아서 백업을 받아준다.
[cron 설정하기 ]
RedHat 의 경우 /etc/crontab 이란 파일있다.
기본적으로 cron 데몬은 이 파일을 최초로 읽어 들인다.
[root@soma] vi /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
기본적인 crontab 내용이다.
[분] [시] [일] [월] [요일] [실행명령] 의 형식으로 이루어졌다.
위의 내용을 보면 /etc/crontab 을 읽어 들이면서 crontab 내용 안의 4 가지 파일을
설정된 시간에 맞춰서 실행한다.
1. 01 * * * * root run-parts /etc/cron.hourly
-> 매월,매일,매시,01 분에 /etc/cron.hourly를 실행한다.
2. 02 4 * * * root run-parts /etc/cron.daily
-> 매월,매일 4 시 02 분에 /etc/cron.daily 를 실행한다.
3. 22 4 * * 0 root run-parts /etc/cron.weekly
-> 매주일요일 4 시 22 분에 /etc/cron.weekly 를 실행한다.
4. 42 4 1 * * root run-parts /etc/cron.monthly
-> 매월 1일 4 시 42 분에 /etc/cron.monthly 를 실행한다.
[ 예제]
매일, 매시간10, 20 분에 /home/imsi/public_html/ 내의 모든 파일 및 디렉토리를
imsi.tar.gz 란 파일명으로 압축하고 나서 imsi.tar.gz 파일을 /home/imsi/back 이란
디렉토리로 이동하는 것을 설정해 보도록 하겠다.
1. /etc/crontab 설정하기
[root@tgs] vi /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
10,20 * * * * 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
2. /etc/cron.hourly 스크립트 만들기
[root@tgs]vi /etc/cron.hourly/imsi
#!/bin/sh
tar cvfz /home/imsi/imsi.tar.gz /home/imsi/public_html/*
mv /home/imsi/imsi.tar.gz /home/imsi/back/
[ 옵션 사용하기 ]
1. crontab -l : 현재 설정되어있는 cron 의 리스트를 출력한다.
2. crontab -e : 이 옵션으로도 cron을 설정할 수 있다.
3. crontab -r : 이 옵션은 현재 설정되어있는 모든 cron 설정을 지운다.
etc/crontab 에 설정된 내용은 지워지지 않는다