이거 맘대로 되는 세상이 아니구만...

클론텝 ~~~crontab ----펌) 본문

리눅스

클론텝 ~~~crontab ----펌)

바이홍 2008. 4. 10. 17:56
반응형
1) crontab -e : 크론 편집등록
=> 사용자가 항목 작성을 마치고 파일을 종료할 때, crontab 명령이 그것을
/var/spool/cron/crontabs 디렉토리에 복사한 후, 사용자의 현재 사용자 이름에 대해 명명된 파일에 배치합니다.
사용자 이름을 갖는 파일이 crontabs 디렉토리에 이미 존재하는 경우, crontab 명령은 기존 파일위에 겹쳐씁니다.

=> 편집시 공백 행과 첫번째 비공백 문자가 번호 기호(#)인 행은 무시됩니다.즉, 실행하지 않습니다.

=> minute(분) hour(시) day_of_month(일) month(월) weekday(요일) command(명령)
이들 필드는 다음 값을 승인합니다. 각 필드에 대해 반드시 값을 지정해야 합니다.
minute(분) : 0 - 59
hour(시) : 24시간으로 나타나는 0 - 23
day_of_month(일) : 1 - 31
month(월) : 1 - 12
weekday(요일) : 일요일부터 금요일까지를 나타내는 0 - 6
command(명령) : 쉘 명령
=> cron 디먼은 사용자의 HOME 디렉토리에서 서브쉘을 시작합니다. 사용자가 로그인되지
않았을 때 수행하도록 명령을 계획하고 사용자의 .profile 파일에 있는 명령을 수행하려면,
쉘명령은 반드시 명시적으로 사용자의 .profile 파일을 읽어야 합니다.
예) 50 08 * * 1,2,3,4,5,6 /batch/cmt/business/ftpdown.sh
10 02 * * * /batch/cmt/agency/start_day_all_batch.sh
2) crontab -l : cron에 등록되어있는 list를 보여줍니다.
3) crontab -r : cron디렉토리에서 사용자의 crontab 파일을 제거합니다.
4) mycronjobs이라는 파일을 /var/adm/cron/ 디렉토리에 복사하려면
=> crontab mycronjobs
5) 매 시간마다 콘솔에 시간을 기록하려면
=> 0 * * * * echo The hour is `date` .
모든 월요일, 수요일 및 금요일 오전 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
=> 30 6 * * 1,3,5 /usr/bin/calendar
모든 화요일부터 금요일까지 오전 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
=> 30 6 * * 2-5 /usr/bin/calendar
일년 내내 매일 6시 30분에 calendar 명령을 수행하려면, 다음과 같이 입력하십시오.
=> 30 6 * * * /usr/bin/calendar
8월 동안 매일 자정에 maintenance라는 스크립트를 수행하려면, 다음과 같이 입력하십시오.
=> 0 0 * 8 * /u/harry/bin/maintenance




crontab 명령 사용에 대한 제어
: /var/adm/cron/cron.allow 및 /var/adm/cron/cron.deny 파일은 crontab 명령을 사용할 수 있는 사용자를 제어할 수 있으며,
루트 사용자는 이 파일을 작성, 편집 또는 삭제할 수 있습니다.
1) crontab명령 사용이 가능하게 하려면
=> /var/adm/cron/cron.allow 파일에 사용자가 등록되어 있으면 그 사용자는 crontab명령을 사용해서
크론을 편집등록할 수 있습니다. 사용자가 등록되어 있지 않으면 crontab명령을 사용할 수 없습니다.
=> 이 파일의 항목은 한 행에 이름이 한 개 있는 사용자 로그인 이름입니다.
사용자의 로그인 ID가 둘 이상의 로그인 이름과 연관되는 경우, crontab 명령은
사용자가 실제로 사용 중인 로그인 이름과 상관없이 /etc/passwd 파일에 있는 첫번째 로그인 이름을 사용합니다.
예)root : 루트 사용자의 로그 이름이 cron.allow 파일에 반드시 나타나야 합니다.
adm
uucp
cmtest
oratst
mngsite
secadmin
altibase

2) crontab명령사용을 불가능하게 하려면
=> /var/adm/cron/cron.deny 파일에 사용자가 등록되어 있으면 crontab명령 사용이 불가능합니다.
=> 또한 cron.allow파일은 존재하지 않고 cron.deny 파일만이 존재하는 경우에는
cron.deny파일에 나타나지 않는 모든 사용자가 crontab 명령을 사용할 수 있습니다.
3) 다음 중 하나에 해당되는 경우, crontab 명령을 사용할 수 없습니다.
=> cron.allow 파일과 cron.deny 파일이 존재하지 않습니다(루트 사용자만 허용).
=> cron.allow 파일이 존재하지만 사용자의 로그인 이름이 나열되어 있지 않습니다.
=> cron.deny 파일이 존재하고 사용자의 로그인 이름이 나열되어 있습니다.

16-3. 크론 편집의 예제) crontab -e
# weekend job pro*c oracle loader (by kang min.lee)
00 07 * * 2 /batch/cmt/weekjob/b_bank_inf/bankinf.sh
05 07 * * 2 /batch/cmt/weekjob/b_bank_inf_hdr/bankinfhdr.sh
10 07 * * 2 /batch/cmt/weekjob/b_charg_item/chargitem.sh
15 07 * * 2 /batch/cmt/weekjob/b_gen_cd_det/gencddet.sh
20 07 * * 2 /batch/cmt/weekjob/b_gen_cd_hdr/gencdhdr.sh

#011-estation weblog backup move (2002.3.05 by w.js)
#....#00 17 * * * /batch2/from_was_to_db.sh

# business member count(2002.03.29 by Kim min-seok)
00 00 * * * /batch/cmt/business/member/make_data_total.sh
00 09 * * 1,2,3,4,5,6 /batch/cmt/business/member/member.sh
00 11 * * 0 /batch/cmt/business/member/member.sh
25 02 * * * /batch/cmt/business/member/make_email_addr.sh
#....#25 04 * * * /batch/cmt/business/member/make_email_addr017.sh

# agency corp_sect insert test user.....(2004.07.26 by blacksea)
00 09 * * * /batch/cmt/agency/agency_user_insert.sh

# agency daily batch....(2004.08.05 by BooYeol Pyeon)
00 07 * * * /batch/cmt/agency/start_day_all_batch.sh




[정보]크론탭을 이용한 잡스케줄링 조회 (143)

UNIX | 2004/09/17 (금) 16:47 공감 (0) 스크랩 (0)

BULLETIN CATEGORY 
BULLETIN TOPIC : UNIX 
: CRONTAB에서 Oracle Program 구동

--------------------------------------------------------------------------------
  [ 설명 ]    
  Unix 에서 특정 Program을 User가 지정한 시간에 자동으로 실행하기 위해서는 Crontab Utility를 이용하여야 한다.

Crontab에 의해 기동 된 Program은 Background로 실행되며, 일반 시스템 및 사용자가 Crontab을 이용하기 위해서는 시스템 관리자로부터의 권한 부여 및 프로그램의 실행 시간, 실행하고자 하는 프로그램 등이 Crontab 관련 화일에 등록되어 있어야 한다.   

 Crontab Command를 이용하기 위해 필요한 화일은 cron.allow(System File), Crontab_File(User Definded), Shell Script, cron.deny(System File) 및 최종 실행 프로그램 등이다.  cron.allow에는 Crontab을 사용하는 사용자의 Login Name이 등록되어 있으며 Corntab_File에는 프로그램이 기동되는 시간과 실행되는 프로그램의 이름이 기록된다.  Cron.allow가 존재하지 않으면 cron.deny를 점검하여 사용자가 사용 권한을 거부 당했는지 여부를 결정한다.    
 여기서 Crontab_File은 1개의 행이 6개의 Field로 구성되고, 각 Field는 Blank로 구분되며, Syntax는 다음과 같다.   
   

  [ 예제 ]    

$crontab cron_sample    

cron으로 작업을 등록하고 나면 /var/spool/cron/crontabs에 사용자 로그인 이름의 
화일이 하나 만들어 진다.    
1. cron_sample의 내용:   
        30  *  *  *  *  sample   
        ->매월 매일 매시 30분에 sample을 실행하라는 의미   
2. sample의 내용: /users/oracle/c/demo/samplec   
여기서 만일 Samplec 프로그램이 Oracle에 Connect하여 동작하는 경우, 프로그램이 정상적으로 실행되지 않는다.   
이유는 Crontab에 의해 구동 된 프로세스는 프로그램의 Owner의 Shell에 의해 Fork되는 것이 아니므로, Oracle 프로그램이 구동 되는데 필요한 환경 변수(ORACLE_HOME, ORACLE_SID, PATH 등)가 Setting되어야 한다.   
따라서 Samplec가 정상적으로 실행되기 위해서는 Shell Script인 Sample이 다음과 같이 수정되어야 한다.   
3. 수정된 sample의 내용:    
ORACLE_SID=ora7; export ORACLE_SID   
ORACLE_HOME=/oracle; export ORACLE_HOME;   
PATH=$PATH;$ORACLE_HOME/BIN; export PATH   
/users/oracle/c/demo/samplec   

이외에도 경우에 따라서 NLS_LANG, ORA_NLS등도 세팅 해 주어야 한다.   

4. /users/oracle/c/demo/samplec의 내용이 scott/tiger의 test(a number, b varchar2(10))라는 table에 하나의 row를 insert시키는 내용이라면 다음과 같다.    

sqlplus scott/tiger << ins_EOF   
insert into test values (5, 'Inserted');   
commit;   
exit   
ins_EOF
반응형
Comments