Cron은 작업 스케줄링 기능을 제공하는 프로그램이다. 다시 말해 특정시간에 특정작업을 자동으로
수행하도록 하는 프로그램으로 대부분의 배포판에 기본적으로 설치되어 있다.
즉 정기적으로 새벽 2시에 데이터 백업을 받거나 특정일에 사용자들에게 메일을 보내든가 하는 작업을
미리 cron에 예약을 해두면 우리는 새벽 2시까지 백업을 받으려고 기다릴 필요도 없고,
특정일에 메일 보내는 것을 잊고 있어도 자동으로 메일이 발송 될 것이다.

이처럼 cron을 잘 사용하면 여러가지 번거로운 작업들을 자동으로 손쉽게 처리할 수 있다.
우선 래드햇 계열을 중심으로 설명을 해 보면 /etc/crontab 파일에 스케줄링 정보가 들어있다.
스케줄링 정보는 다음과 같은 규칙으로 기록하면 된다.

# 분 시 일 월 요일 명령

그리고 다음과 같이 필드를 채우면 된다.

# 분 (0시부터 59)
# 시 (0시부터 23)
# 일 (1시부터 31)
# 월 (1부터 12 혹은 jan,feb와 같은 형식으로도 기입가능)
# 요일 (0 부터 6.0이 일요일이면 mon, tue 와 같은 형식으로도 기입가능)
# 명령



그럼 /etc/crontab에 있는 예를 보면서 cron에 대해서 살펴보자

----------------------------------------------------------------

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

----------------------------------------------------------------

여기서 #run-parts라고 되어 있는 곳 밑에서부터 설정파일이 시작된다.
우선 첫째 줄부터 살펴보자. * 이라 되어 있는 부분은 all을 뜻하는 부분으로 매번 실행한다는 의미이다. 즉 첫째줄은 매월, 매주, 매일, 매시 01분마다 명령을 실행하라는 의미이다. 곧 한시간에 한번씩 명령을 실행하라는 의미이다. 뒤에 run-parts 부분이 의미하는 것은 /etc/cron.hourly 디렉토리에 있는 스크립트를 실행하라는 의미이다. 즉 스크립트 파일을 /etc/cron.hourly 폴더에 넣어두면 매시 1분마다 그 스크립트가 실행될 것이다.

마찬가지로 두번째 줄은 매일 4시 2분에 /etc/cron.daily 디렉토리에 있는 스크립트를 실행하라는 의미이고, 세번째 줄은 매 일요일 4시 22분마다 스크립트를 실행하라는 의미이다.

그래서 새벽 4시경에 서버에서 갑자기 시끄러운 소리가 나는 경우가 있는데 이는 cron에 예약된 스크립트가 실행되기 때문이다.

cron에 작업을 예약하는 방법으로 우선 첫번째는 스크립트를 짜서 /etc/cron.daily, /etc/cron.weekly 등의 폴더에 넣어두는 것이다.

그럼 간단한 스크립트를 만들어보자.


-----------------------------------------------------------------

 tar zcvf db1.tar.gz /usr/local/mysql/data/db1 ;  mv /root/db1.tar.gz  /home/dearlars/backup


 --------------------------------------------------------------

 위의 스크립트는 /usr/local/mysql/data/db1의 내용을 압축파일로 만들어서
 /home/dearlars/backup 폴더에 두는 기능을 한다. 즉 mysql에서 매일 백업받을 필요 없이
 위처럼 파일을 작성하고 /etc/cron.daily 폴더에 두면 매일 자동적으로
 백업 작업이 이루어지는 것이다.

즉 /etc/cron.daily 폴더에 위의 파일을 cron_test란 이름으로 저장하고 빠져 나온 뒤에
‘chmod +x cron_test’으로 실행권한을 준다.
그러면 crontab에 설정된 대로 매일 4시 2분마다 위의 스크립트가 실행될 것이다.
이처럼 작업내용을 스크립트로 만들어 실행 권한을 주고 /etc/cron.daily, /etc/cron.weekly등의
폴더에 넣어두면 일정 시간마다 스크립트가 자동으로 실행 된다.



또 다른 방법으로는 crontab 명령어를 이용해 주는 방법이 있다.

Crontab 명령어에는 다음과 같은 옵션을 줄 수 있다.

crontab -e : 작업할 내용 작성하기
crontab -l : 현재 설정되어 있는 작업내용 보기
crontab -r : 설정되어 있는 작업을 모두 삭제하기

우선 crontab -e 로 매일 새벽 5시마다 서버를 reboot 시키는 스크립트를 작성해보자

------------------------------------------------

0 05 *** reboot

------------------------------------------------

이처럼 crontab명령어를 이용해서 직접 원하는 시간에 작업할 내용을 설정해 줄 수 있다.
다 작성했으면 crontab -l 로 제대로 작성되었는지 확인해 보자.

#crontab -l


이처럼 간단하게 작업할 내용을 설정해 줄 수 있다.

그리고 기타 옵션을 살펴보면 콤마와 하이픈, 그리고 슬래쉬를 이용하는 옵션이 있다

0 4 1,10 * * 명령1

위 처럼 crontab을 편집하면 매월 1일과 10일 4시에 명령1을 실행한다는 의미이다. 또

0 4 1-10 * * 명령2

위처럼 crontab을 편집하면 매월 1일부터 10일동안 매일 명령2를 실행한다는 의미이다.그리고

0 4 */5 * * 명령3

라고 편집하면 매 5일마다 실행한다는 것으로 1일, 6일, 11일 등과 같이 5일 간격으로 실행한다는 의미이다.
그리고 그 외에 root 권한으로 다른 사용자의 crontab 파일을 편집하기 위해서는 다음과 같이 명령하면 된다.

crontab -u user -e

이제 다음 순서로 cron을 이용하여 정기적으로 미러링 하는 법에 대해서 알아보자.








--------------  cron으로 미러링 사이트 만들기 --------------------

cron 사용법에 대해서 알아봤다.

이제 이번에는 cron을 활용하여 내 서버를 미러링 사이트로 만드는 법에 대해서 알아보겠다.

우선 미러링하는 툴로써 rsync란 툴에 대해서 알아보자.

rsync란 프로그램은 미러링 할 때 유용하게 쓰이는 툴로써 다양한 옵션과 효율적인 데이터 전송으로

널리 쓰이고 있다. rsync 홈페이지(http://rsync.samba.org/)에서 프로그램을 다운로드 받을 수 있고,

배포판에 기본적으로 설치되어 있는 경우가 많다.

그러면 rsync가 설치되었다고 가정하고 간단하게 rsync 사용법에 대해서 알아보자.

기본적으로 다음과 같이 명령어를 내리면 된다.

 rsync -avz --delete <미러링 할 서버경로> <미러링 받을 경로>

 
우선 해당 옵션에 대해서 살펴보면 다음과 같다.

-a : archive 모드로 전송
-v : 진행상황을 보여줌
-z : 파일 데이터를 압축해서 전송
--delete : 미러링 할 서버에는 없고, 미러링 받을 경로에만 있는 파일들 삭제.

예로써 slackware 사이트를 미러링 하려면 쉘 상에서 다음과 같이 명령을 내리면 된다.

$ rsync -avz --delete ftp.slackware.com::slackware /home/dearlars/mirror/slackware
 

여기서는 ftp.slackware.com 밑의 slackware폴더에 있는 내용을

내 서버의 /home/dearlars/mirror/slackware로 미러링 하는 것이다.

이러한 작업을 cron에 예약해두면 정기적으로 미러링을 할 수 있게 되고,
또 부하가 많이 걸리는 시간을 피해서 미러링 할 수 있게 된다.
그러면 다음처럼 crontab을 편집해 보자.

------------------------------------------------------------------------

0 05 *** rsync -avz --delete ftp.slackware.com :: slackware /home/dearlars/mirror/slackware

------------------------------------------------------------------------
이러면 정해진 시간에 미러링을 받을 수 있게 된다.

이처럼 cron을 사용하면 반복되는 작업을 자동적으로 처리할 수 있고,

원하는 시간에 자동적으로 작업을 처리할 수 있다.


[출처] http://qdata.co.kr/bo/bbs/board.php?bo_table=ltip&wr_id=92
신고

+ Recent posts

티스토리 툴바