리눅스 Cron 데몬과 Crontab
페이지 정보
작성자
본문
cron 데몬
crontab 명령 이벤트
at 명령 이벤트
batch 명령 이벤트
sync 서브루틴 이벤트
ksh 명령 이벤트
csh 명령 이벤트
[root@linux /root]# crontab
usage: crontab [-u user] file
crontab [-u user] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
[root@linux /root]#
주로 사용하는 옵션은 -l 옵션과 -e 옵션입니다.
[root@linux /root]# cat /home/www/cron/daily_backup
cron 데몬 목적 명령을 자동으로 수행합니다.
구문 : cron
설명 : cron 데몬은 지정된 날짜와 시간에 쉘 명령을 수행합니다. 다음 이벤트 유형들이 cron 데몬으로 계획됩니다.
crontab 명령 이벤트
at 명령 이벤트
batch 명령 이벤트
sync 서브루틴 이벤트
ksh 명령 이벤트
csh 명령 이벤트
이들 이벤트가 처리되는 방법은 /var/adm/cron/queuedefs 파일에 의해 지정됩니다.
정기적으로 계획된 명령은 crontab 파일에 있는 지침에 따라 지정될 수 있습니다. crontab 명령을 사용하여 crontab 파일을 제출할 수 있습니다. at 명령을 사용하여 한번만 수행될 명령을 제출하십시오. cron 데몬은 절대로 종료하지 않으므로, 한번만 수행되어야 합니다.
cron 데몬은 cron 데몬이 초기설정될 때만 crontab 파일과 at 명령 파일을 시험합니다. crontab 명령을 사용하여 crontab 파일에 변경을 수행할 때, 변경을 나타내는 메세지가 cron 데몬으로 전송됩니다. 이것으로 새로운 또는 변경된 파일에 대해 정기적으로 계획된 간격으로 오버헤드를 점검하지 않아도 됩니다.
chtz 명령, 웹 기반 시스템 관리 응용프로그램으로 또는 SMIT를 통해 TZ 환경 변수를 변경할 때, cron 데몬을 재시작해야 합니다. 이로써 cron 데몬이 새 TZ 환경 변수에 대한 올바른 시간대 및 일광절약시간 변경 정보를 사용할 수 있게 됩니다.
cron 데몬은 /var/adm/cron/log 파일에 활동 로그를 작성합니다.
보안 감사(audit) 이벤트: 감사(auditing) 서브시스템이 적절하게 구성설정되었고 사용 가능한 경우, cron 명령은 실행될 때마다 다음 감사 레코드(이벤트)를 생성합니다.
이벤트 정보
CRON_Start 각 작업의 이름, 작업이 at 또는 cron 명령에 의해 개시되었는지 여부 및 작업을 시작한 시간을 나열합니다.
CRON_Finish 사용자의 이름, 작업의 프로세스 ID 및 처리가 완료된 시간을 나열합니다.
CRON_Finish 사용자의 이름, 작업의 프로세스 ID 및 처리가 완료된 시간을 나열합니다.
감사 이벤트 선택 및 그룹화하는 방법과 감사 이벤트 데이타 수집 구성설정 방법에 대한 자세한 내용은 AIX Version 4.3 System Management Guide: Operating System and Devices에 있는 "감사 기능 설정"을 참조하십시오.
파일
/var/adm/cron/FIFO crontab 또는 at 명령으로 새 작업이 제출될 때 cron 데몬으로 메세지를 전송하는 명명된 파이프.
/var/adm/cron 주 cron 데몬 디렉토리를 지정합니다.
/var/adm/cron/log 사용통계 정보를 지정합니다.
/var/adm/cron/queuedefs cron 데몬 이벤트 파일을 지정합니다.
/var/spool/cron 스풀 영역을 지정합니다.
/usr cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/usr/bin cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/usr/lib cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/etc cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/tmp cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/var/adm/cron 주 cron 데몬 디렉토리를 지정합니다.
/var/adm/cron/log 사용통계 정보를 지정합니다.
/var/adm/cron/queuedefs cron 데몬 이벤트 파일을 지정합니다.
/var/spool/cron 스풀 영역을 지정합니다.
/usr cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/usr/bin cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/usr/lib cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/etc cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
/tmp cron 데몬에 의해 계속 열려 있는 디렉토리를 나타냅니다.
crontab
사용법 : crontab [ -e | -l | -r | -v | File ]
설명
리눅스에서는 매일 혹은 매주, 아니면 한달에 한번 등등 주기적으로 해야 하는 작업을 편리하게 지원해주는 cron이라는 도구가 있습니다.
cron을 이용하면 이러한 단순 반복 작업을 쉽게 서버에서 자동으로 실행되도록 할 수 있습니다.
cron을 이용하면 이러한 단순 반복 작업을 쉽게 서버에서 자동으로 실행되도록 할 수 있습니다.
그러면 간단한 사용방법과 응용법에 대해 살펴보도록 하죠.
cron을 이용한 작업 자동화 스케줄링은 크게 두가지 단계로 생각해 볼 수 있습니다.
첫번째는 작업 내용을 위한 간단한 쉘 실행 스크립트를 만드는 것이고,
두번째는 그 실행 스크립트를 crontab을 이용해 cron에서 자동실행 할 수 있도록 등록하는 것이죠.
두번째는 그 실행 스크립트를 crontab을 이용해 cron에서 자동실행 할 수 있도록 등록하는 것이죠.
cron 을 사용하기 위해서는 crontab 이란 명령을 이용합니다.
[root@linux /root]# crontab
usage: crontab [-u user] file
crontab [-u user] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
[root@linux /root]#
주로 사용하는 옵션은 -l 옵션과 -e 옵션입니다.
-l은 cron에 스케쥴링 되어 있는 작업 리스트를 보여주며, -e는 작업 내용을 편집할 수 있도록 해줍니다.(기본적으로 편집기로 VI 에디터를 사용하므로 VI 에디터의 기본적인 사용이 가능해야 합니다.)
crontab을 이용해 스케줄링을 편집할 경우의 형식은 다음과 같습니다.
0 3 * * * /home/www/cron/daily_backup > /dev/null 2>&1
0, 3, 그리고 *로 이루어진 맨 앞의 5개의 필드는 각각 분, 시, 일, 월, 요일을 나타냅니다.
분 : 0부터 59
시 : 0부터 23
일 : 1부터 31
월 : 1부터 12, 또는 jan, feb 등의로 정의
요일 : 0부터 6(0이 일요일), 또는 sun, mon 등으로 정의
시 : 0부터 23
일 : 1부터 31
월 : 1부터 12, 또는 jan, feb 등의로 정의
요일 : 0부터 6(0이 일요일), 또는 sun, mon 등으로 정의
그리고 다음의 /home/www/cron/daily_backup은 실행 명령 또는 실행 파일을 나타내며, cron의 출력 결과와 에러내용은 메일을 통해 root에게 보내지는데 메일을 통해 통보받기를 원하지 않고 어떠한 기록을 남길 필요가 없을때는 > /dev/null 2>&1 으로 각각 표준 출력과 표준에러 처리에 대해 정의하면 됩니다.
만약 로그파일을 이용해 결과를 남기고 싶다면 > /dev/null 대신 >> /home/www/cron/cron_log 등으로 정의하면 차곡차곡 출력 결과가 쌓이겠죠.
만약 로그파일을 이용해 결과를 남기고 싶다면 > /dev/null 대신 >> /home/www/cron/cron_log 등으로 정의하면 차곡차곡 출력 결과가 쌓이겠죠.
오늘 설명드릴 내용은 홈페이지의 내용을 하루에 한번씩 백업하는 내용이므로, 백업파일이 정상적으로 생성되었는지 확인하는 것이 cron이 제대로 작동했는지 확인하는 것이 됩니다. 그래서 위와 같이 메일이나 로그등이 남지 않도록 하였습니다.
그럼 지정된 명령이나 실행 스크립트를 어떻게 구성할 것인가 살펴봐야겠죠?
[root@linux /root]# cat /home/www/cron/daily_backup
#!/bin/sh
## WWW Daily Backup
cd /home/www/backup
dir='date +%y%m%d'
mkdir $dir
cd $dir
cp -r /home/www/public_html/* .
## WWW Daily Backup
cd /home/www/backup
dir='date +%y%m%d'
mkdir $dir
cd $dir
cp -r /home/www/public_html/* .
[root@linux /root]#
간단하죠? 첫째 줄에서는 쉘을 정의하고…그다음 명령들은 날짜에 해당하는 백업 디렉토리를 만들어 이동한다음, 홈페이지 내용을 복사해오는 명령들의 나열입니다.
그러면 다시 cron에 설정되어있는 내용을 살펴보면…
0 3 * * * /home/www/cron/daily_backup > /dev/null 2>&1
0 3 * * * /home/www/cron/daily_backup > /dev/null 2>&1
앞의 필드를 살펴본다면 매일 새벽 3시 정각에 daily_backup 쉘 스크립트를 실행하고, 표준 출력 결과는 모두 버리라는 뜻으로 해석하면 되겠군요.
이러한 방법으로 DB나 기타 백업 처리의 자동화가 가능합니다. 물론 기타 작업또한 자동화 시킬 수 있겠죠.
※ crontab 사용예시
1. 매 시간마다 콘솔에 시간을 기록하려면, 다음과 같이 입력하십시오.
0 * * * * echo The hour is `date` . >/dev/console
2. 모든 월요일, 수요일 및 금요일 오전 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
30 6 * * 1,3,5 /usr/bin/calendar
3. 일년 내내 매일 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
30 6 * * * /usr/bin/calendar
4. 8월 동안 매일 자정에 maintenance라는 스크립트를 수행하려면, 다음과 같이 입력하십시오.
0 0 * 8 * /u/harry/bin/maintenance
5. 명령에 대한 표준 입력에 대해 텍스트를 정의하려면, 다음과 같이 입력하십시오.
0 16 * 12 5 /usr/sbin/wall%HAPPY HOLIDAY!%Remember to turn in your time card.
%(퍼센트 기호) 뒤에 오는 텍스트가 다음과 같이 wall 명령에 대한 표준 입력을 정의합니다.
HAPPY HOLIDAY!
Remember to turn in your time card.
Remember to turn in your time card.
댓글목록
MS Mesos님의 댓글
MS Mesos 이름으로 검색 작성일The latest 2011 Omega http://ms.brosale.com Replica Watches accept ashen up, you are affairs Omega technology account of http://wow-eu.brosale.com/ beforehand Omega advised watches to, you apperceive Omega superior now http://www.omegawatchshop.com/ abrasion it with pride.