웹마짱구's 블로그

Crontab 사용법

Linux/Linux : 2008/01/22 18:17


원문 : http://blog.naver.com/brainchaos7/40016011346 

1. cron 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되
   며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의
   crontab 화일을 만들어 cron job을 지정할 수 있다.  
   
   cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon
   형태로 수행된다.
   
2. 각 사용자 별로 crontab 화일을 만드는 방법은 아래와 같이 \"crontab -e\" 명령을
   실행하면 된다.
   
    % crontab -e
     
   위와 같이 명령을 실행하면 \"vi\"  editor mode로 들어가 crontab 화일을 수정할수
   있게 되는데,  만약 \"vi\" mode로 들어가지 않으면 \"EDITOR\" 환경변수를 vi로 변경
   후 crontab 명령을 다시 수행한다.
   
        2.1 csh을 사용하는 경우
     
           % setenv EDITOR vi
           % crontab -e
           
        2.2 sh이나 ksh을 사용하는 경우
     
           $ EDITOR=vi
           $ export EDITOR
           $ crontab -e
           
3. crontab 화일의 내용을 정의 하는 format은 아래와 같다.
 
   분  시  일  월  요일   실행할 명령
   
    분 : 0-59
    시 : 0-23
    일 : 1-31
    월 : 1-12
    요일 : 0-6( 0: 일요일)  
     
   예) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업
   
       15 3 * * 0 find /var -name core 2>/dev/null |  xargs rm -f
       
       매월 1일 오후 6시에 시스템 down message 보내기
       
        0 18 1 * * wall \"System Will be down\"
         
4. /etc/cron.d/cron.allow 화일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템
   관리자는 각 사용자별로 crontab 화일에 대한 access 권한을 제한 할 수 있다.
   
   4.1 crontab을 access 할 수 있는 사용자  
   
       - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 안에 지정된 사용자  
       
       - /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일  
         안에 지정되지 않은 사용자
         
   4.2 crontab을 access 할 수 없는 사용자
   
       - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 않에 지정되지 않은
         사용자
         
       - /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일에
         지정된 사용자
         
       - /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일이 모두 없는 경우,  
         root를 제외한 모든 사용자  
     
    4.3 OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의
        사용자들이 지정된다.
         
        daemon
 bin
 smtp
 nuucp
 listen
 nobody
 noaccess
 
 /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때
 는 위와 같이 한줄에 한명씩 사용자를 지정한다.
 
5. cron에 관련된 환경은 /etc/default/cron 화일에 정의 할 수 있다.
 
   % cat /etc/default/cron
   
   CRONLOG=YES
   PATH=/usr/bin:/usr/ucb:




우선 crontab은 각 유저별로 설정이 가능하고 따로 작동이 됩니다. 필요하다면 root로 로그인해서 crontab을 만드시면 됩니다. 뭐..일반 유저로 작업해도 상관없다면 해당 유저로 로그인해서 crontab 만드시면 되구요.. 만드는 법은 아래와 같습니다.
 
# ps -ef | grep cron
 
위에서 cron 프로세스가 보이면 떠있는겁니다. 특별히 내리지 않았다면 부팅때마다 자동으로 올라옵니다. 만약에 없으면 /etc/init.d/cron start 하시면 됩니다.
 
# crontab -e
 
요렇게 하면(현재 root로 로그인중) root의 기본 crontab 내용이 보입니다. 만약 화면이 이상하게 보인다면 아래와 같이 하세요..
 
# EDITOR=vi
# export EDITOR
# crontab -e
 
#ident  \\\"@(#)root       1.19    98/07/06 SMI\\\"   /* SVr4.0 1.1.3.1       */
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * 0,4 /etc/cron.d/logchecker
10 3 * * 0   /usr/lib/newsyslog
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
 
요게 root의 기본 crontab 인데요.. 필요한걸 맨 밑줄에 추가해주면 됩니다. crontab 엔트리의 형식은 이렇습니다.
 
분 시 일 월 요일 내용
 
예를들어,
 
10 3 * * 0,4 /etc/cron.d/logchecker
 
이놈은 0,4 요일에(0부터 일요일) 즉, 일요일과 목요일 그리고 아무 일이나 아무 월 03시 10분에 logchecker를 실행시키라는 겁니다. 여기서 *를 쓴 이유는 매주 일요일과 목요일에 실행시키기 위함입니다. 만약 일,월 부분에 *를 안쓰고 날자를 지정했다면 모든 조건이 다 만족할때만 실행이 되기때문에 매주 실행이 안되겠죠..
 
마지막으로 작업하실 내용은 ;을 이용해서 쭉 붙여서 쓸수도 있습니다. 명령어;명령어;명령어 이런식으로요.. 하지만 작업내용이 좀 길어지면 스크립트를 하나 만들고 해당 스크립트를 실행시키도록 하시는게 보기에도 깔끔하고 편합니다. 그리고 절대경로를 사용하시구요..
 
다 작성하셨으면 vi처럼 저장하고 나오시면 됩니다. 그러면 바로 적용이 됩니다.



Script에 shell을까먹지 말자


#!/bin/sh


============================================================================

- '*'표시는 해당 필드의 모든 시간을 의미한다.
- 3,5,7와 같이 콤마(,)로 구분하여 여러 시간대를 지정할 수 있다.
- 2-10와 같이 하이픈(-)으로 시간 범위도 지정할 수 있다.
- 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬래쉬(/)로 시간 간격을 지정할 수 있다(2~10시까지 3시간 간격으로. 즉, 3, 6, 9시를 의미함).

top

Linux/Linux : 2008/01/22 18:17 Trackback. : Comment. : view 1934

Trackback Address :: http://jjangu.pe.kr/blog/trackback/493

Write a comment.




: 1 : ... 107 : 108 : 109 : 110 : 111 : 112 : 113 : 114 : 115 : ... 543 :