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을 사용하면 반복되는 작업을 자동적으로 처리할 수 있고,
원하는 시간에 자동적으로 작업을 처리할 수 있다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]</div>
수행하도록 하는 프로그램으로 대부분의 배포판에 기본적으로 설치되어 있다.
즉 정기적으로 새벽 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을 사용하면 반복되는 작업을 자동적으로 처리할 수 있고,
원하는 시간에 자동적으로 작업을 처리할 수 있다.<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]</div>
게시글 목록
| 번호 | 제목 |
|---|---|
| 10156 | |
| 24771 | |
| 24770 | |
| 24769 | |
| 24768 | |
| 24767 | |
| 24766 |
계약서
[서식] 부동산 매매계약서
|
| 10155 |
JavaScript
자바스크립트 레퍼런스
|
| 10148 | |
| 10143 | |
| 28668 | |
| 10140 | |
| 10139 |
기타
계산기 자바 소스 코드
|
| 10137 |
MySQL
Mysql 자동증가형 필드 초기화하기
1
|
| 10135 |
MySQL
홈페이지 자동 백업 방법
1
|
| 10134 |
Flash
다운로드 에이젼트의 아파치서버 접근제어하기
|
| 10133 | |
| 10130 | |
| 10129 |
JavaScript
호스트명, 아이피로 아파치접근 허용하기
|
| 10128 | |
| 10127 |
기타
아파치 서버정보 숨기기
|
| 10126 |
JavaScript
아파치를 콘솔 프로그램으로 실행하기
|
| 10122 |
JavaScript
지워지지않는 디렉토리지우기
3
|
| 10121 | |
| 10117 | |
| 10116 | |
| 10114 |
JavaScript
시스템 모니터링 및 시스템 최적화 정리(종합본)
1
|
| 10113 | |
| 10102 |
JavaScript
초보가 만들어본 ...이걸루 몇시간을 고생했슴...
10
|
| 10098 | |
| 28667 | |
| 10097 | |
| 10095 |
JavaScript
무조건 링크건 화일 다운받기
1
|
| 10090 | |
| 10088 |
JavaScript
김영보님의 Ajax 활용 세미나 안내
1
|
| 10083 | |
| 24761 |
계약서
계약서 .. 방계약서입니다
4
|
| 28660 | |
| 28658 | |
| 10082 | |
| 28655 | |
| 10071 | |
| 10069 | |
| 28651 | |
| 10060 |
Flash
플래시 링크를 자바스크립트로 빼기
8
|
| 10053 |
기타
날씨?
6
|
| 10052 |
JavaScript
ajax 영문 tutorial
|
| 28649 | |
| 28644 | |
| 10050 |
JavaScript
[AJAX의 장점?] 사적인 관점에서 봤을때 장점?
1
|
| 10046 |
MySQL
이번 달의 마지막 날 알아 오는 함수
3
|
| 24749 | |
| 10040 | |
| 10030 |
MySQL
PHP 속도를 향상시키는 방법들
9
|
| 24748 | |
| 10028 |
JavaScript
Crazyfiles.com의 Main page Source !!
1
|
| 10016 |
Flash
너무나도 유용한 플래쉬 메뉴입니다
11
|
| 10010 | |
| 10008 | |
| 10003 | |
| 9999 |
MySQL
php.ini
3
|
| 9991 |
MySQL
php로 만든 디비 백업스크립트(쉘용)
7
|
| 28638 | |
| 9988 | |
| 9987 |
JavaScript
netpbm을 이용한 썸네일 만들기
|
| 28635 | |
| 9986 | |
| 9980 |
MySQL
초짜를 위한 Ajax 입문하기 좋은 소스
5
|
| 9975 |
JavaScript
Ajax로 메뉴가 이동(Drag & Drop) 되는 사이트소개!
4
|
| 9971 | |
| 9968 | |
| 9966 | |
| 9965 | |
| 9961 | |
| 28621 | |
| 9956 | |
| 28619 | |
| 9952 |
JavaScript
셀렉트에 스타일을 적용하자
3
|
| 9940 | |
| 24746 | |
| 9939 | |
| 9938 | |
| 9935 |
JavaScript
부드럽게 스크롤 되는 트리구조형 메뉴 스크립트
2
|
| 9934 | |
| 28618 | |
| 9932 |
JavaScript
부드럽게 슬라이딩되는 MFX 메뉴에 롤오버 효과를 더한 메뉴 스크립트
1
|
| 9931 | |
| 9930 | |
| 28617 |
HTML
위에서 하나씩 떨어지는 메뉴 스크립트
|
| 9929 | |
| 9928 |
JavaScript
이 브라우저로 몇페이지나 보았나??
|
| 28615 | |
| 28614 |
HTML
사용자 브라우저의 자바 버전 알려주기
|
| 9927 |
JavaScript
사용자 웹브라우저의 디폴트 언어에 따라 리다이렉트 시키기
|
| 9926 | |
| 9925 | |
| 28613 | |
| 9924 | |
| 9923 |
JavaScript
사용자 브라우저의 펄러그인 목록 출력하기
|
| 9922 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기