2008년 7월 10일 목요일

unix크론탭 사용법

출처 이사벨라 발렌타인의 블로그 | 이사벨라
원문 http://blog.naver.com/megazone99/60002567449

지정한 화일을 입력으로 받아 user의 크론탭 화일을 관리 및 directory로 복사하는 명령어
문법 crontab [file]
options
-r user crontab을 crontab directory로 부터 삭제
-l 호출한 user crontab fule을 출력
file 등록되는 화일명을 지정


-------------------------------------
지정된 시간에 crontab file(/var/adm/cron/crontabs/$USER)의 entry의 rule에
따라서 해당 명령을 실행한다. cron daemon은 시스템이 시작될 때 살고, 만약에
killed 되면 자동적으로 다시 restart 되어진다.
crontab event는 기본적으로 60초 마다 한번씩 rule을 조사한다.
그리고 daemon은 기본 priority 보다 2 낮은 값으로 시작이 되며 특별히 아래의
파일(/var/adm/cron/queuedefs)에 값이 지정되지 않으면 최대 100개 까지 동시에
cron job들이 실행 되어 질수 있다. event의 규칙은 /var/adm/cron/queuedefs에
지정된다. 이파일의 default는 없으며 내용은 다음과 같다.

# a - sh jobs d - sync event
# b - batch jobs e - ksh jobs
# c - cron event f - csh jobs
#
# xxj - maximum number of jobs in this queue (deafult 100)
# xxn - nice value at which these jobs will run at (default 2)
# xxw - wait time till next execution attempt (default 60 seconds)
#
#
# here is an example of a low prority (nice 20), 50 entry batch queue
# b.50j20n60w

여기서 바로 윗줄은 아래와 같이 쓰면

c.200j10n120w

( c : cron , 200 : 동시 허락되는 cron 수 , 10은 nice value , 120 : wait value )

보통의 경우는 위와 같이 detail하게 쓰지 않고 default로 사용한다.


만약 standard input, output에 대해서 cron job이 특별히 따로 지정하지 않으면
작업이 끝나고 해당 user에게 mail을 보내게 된다.


--------------------------------------------------------------------------------
<관련규칙>

◎root 만이 수정가능한 crontab 관련 파일

-cron.deny : cron을 사용할 수 없는 user를 지정한다.만약 이파일이
존재하면 이파일에 지정된 user를 제외한 다른 user는
cron을 사용할 수 없다.
-cron.allow : cron을 사용할수 있는 user를 지정한다.
만약 이파일이 존재하면 이파일에 등록된 user만이 cron을
사용할 수 있다. (단 , root는 제외)


◎crontab entry의 각각의 attribute

minute(0-59),hour(0-23),day(1-31),month(1-12),week(0=Sunday) ,command

--------------------------------------------------------------------------------
<예>

○crontab file에 아래와 같이 설정되어 있다면

30 2 15,28 * * /home/cronjob.sh

이것의 의미를 끝에서부터 해석하면 실행해야할 JOB은 /home/cronjob.sh이고
이것을 요일에 관계없이 매달 그것도 15일과 28일의 새벽 2 시 30분에 매번 실행
하라는 의미이다( * 의 의미는 매번 이라는 뜻임 )

○아래와 같다면

0,15,30,45 8-17 * * 1-5 /home/cronjob.sh

/home/cronjob.sh를 월요일부터 금요일까지 그리고 매달 매일 아침 8시 부터
매시간 15분 간격으로 실행하라는 의미이다.


#crontab -l : crontab table내용을 보여준다.
#crontab -r : crontab file을 지운다.
#crontab -e : crontab table의 내용을 수정한다.


※crontab 의 내용을 수정할 때 crontab -e로 직접 수정을 할 수도 있고
crontab -l > mycrontabfile 처럼 파일로 받아서 수정한 다음
crontab mycrontabfile로 submit시켜서 수정,실행시킬 수도 있다

-----------------------------------
로그를 삭제하는 방법은요...
1. 주기적으로 삭제를 하려면 crontab을 이용하시구요,
-> 이용방법
root로 로그인 후
# crontab -e 하면
vi 화면에
* * * * * 화일경로명

요렇게나오걸랑요
* 표시는 처음 *부터 분,시,일,요일,월을 나타내구요,
'화일경로명'은 해당화일을 위의 * 시간에 맞춰 실행합니다.

ex) 1 * * * * /dev/null > /var/log/sykim
1분마다 /dev/null을 /var/log/sykim으로 실행합니다.

2. 기냥 해당 로그화일을 삭제하려면

# cp /dev/null /var/log/sykim(로그화일) 하시면 됩니다.

from 컴퓨팅존

------------------------------------
CRON
백업또는 주기적으로 일정한 시간대나 특정한 날짜에 해주어야 할일이 있다면,

cron을 사용하여 반복되는 작업을 자동적으로 처리하게 할수 있습니다

우선 사용 방법은 셀스크립트로 실행할 명령들을 한파일에 넣어서 실행권한을 준 다음 cron에

실행할 시간, 날짜와 실행권한을 준 파일 경로를 적어 등록하면 됩니다.

간단한 작업인 경우 직접 cron 에 입력하여 실행할수도 있겠죠.

우선 cron의 스케줄정보 래드햇 기준(배포판들..)으로 /etc/crontab 파일이 존재하고,

그리고 각 사용자 스케줄 정보는 /var/spool/cron/username 으로 기록이 됩니다.

이 파일을 수정하여 예약또는 취소할수 있는 것입니다.

우선 cron 을 설정하기 앞서 형식이 존재합니다.

이런한 형식이 없다면 몇월 몇일 에 어떤 명령어를 실행하여야 하는지;

crond 이 못알아 보기때문에^^ 정해주어야 하는 것이죠.

형식:

분 시 일 월 요일 명령

이렇게 구성됩니다. 각각 한칸으로 구별한다는것을 꼭 명심하시기를^^

형식을 알게 되었으니, 이제 어떻게 예약을 등록하는지 알아야 겠죠^^

/var/spool/cron/username 을 수정 해야 합니다.

#crontab -e

이렇게 하시면 수정 삭제 추가 등을 하실수 있습니다^^

예제를 통하여 이해를 빠르게 해드리겠습니다^^


예제1>매시간 05분에 명령을 실행

05 * * * * 명령

예제2>매일 06시 명령을 실행 (매일 특정 시간때 서버 리붓할때 유용; 엔죠도 저런식이지 않을까요;;)

0 06 * * * 명령

(0 04 * * * reboot 이렇게 해주면.. 매일 새벽 4시에 서버리붓)

예제3>5분간격으로 명령을 실행(MRTG 와 같은 몇분을 주기적으로 실행해주어 하는 경우 유용)

*/05 * * * * 명령

예제4>매달 20,28 일 04시에 명령을 실행(데이터 백업과 같은 한달에 한두번 해주어야 하는 경우 유용)

0 04 20,28 * * 명령

예제5>매달 10에서 15일 동안 5시50분에 명령실행

50 05 10-15 * * 명령

@crontab 명령정리@

root로 작업시 사용자 스케줄 수정

crontab -u username -e | 해당 유저의 스케줄 정보를 수정 하실수 있습니다.
----------------------------------------
crontab -e | 스케줄 수정(edit)
crontab -l | 현재 cron에 등록되어 있는 것을 출력(list)
crontab -r | 등록된 스케줄 제거(remove)


by KYU-BUM(2002.03.30)


http://chorong.linuxstudy.pe.kr/study/unix/kcron.html 

댓글 없음:

댓글 쓰기