사용자 도구

사이트 도구


os:debian:cron

문서의 이전 판입니다!


CRON

cron table 형식

  1. cron table은 모두 6가지 필드로 이루어져 있습니다.
  2. 각 필드는 하나이상의 space로 구분되며 하나의 배치작업은 한 라인에 정의됩니다.
  3. 첫 필드에 #이 나타나면 그 라인은 주석라인(comment 처리됨)입니다.
    1. 매시마다 시스템의 부하량(load average)를 /tmp/load.log라는 파일에 저장한다고 가정해 봅시다.
    2. 시스템의 부하량 점검은 uptime(1) 명령으로 알 수 있습니다.
    3. 이러한 배치작업을 실행하기 위한 cron table의 내용은 아래와 같습니다.
    4. 가정 : cron.allow, cron.deny는 존재하지 않음 ⇒ root 만이 crontab 명령 사용 가능.
  • 즉, cron table 형식은 다음과 같습니다.
    minite   hour   day   month   week   command 
  • 예를 들어 다음과 같은 라인이 있다고 합시다.
    1   2   3   4   5   uptime   >>   /tmp/load.log 
    1. 위cron table은 금요일(5) 이면서 4월(4) 3일(3) 02시(2) 01분(1) 에 “uptime » /tmp/load.log” 라는 명령을 실행시키라는 의미
    2. 4월 3일이면서 금요일인 날이 과연 몇번이나 있을까요..
    3. (일요일은 0으로 표현됩니다.)
  • 만약 13일 금요일 13시 정각마다 위 프로그램을 실행시킬려면 ?
    0 13 13 * 5 uptime >> /tmp/load.log 

cron table 형식 예제

  1. 만약 uptime » /tmp/load.log를 jaeyjang이라는 사용자가 실행시키게 하고 싶다면?
    0   13   13   *   5   su   -   jaeyjang   -c   "uptime >> /tmp/load.log" 
    1. 즉 command 필드에서 su 명령을 사용하여 프로그램을 jaeyjang이라는 사용자가 실행하게 하면 됩니다.
    2. -c 옵션은 su 명령에 있는 옵션인데 -c 옵션뒤에 command 가 나온다는 의미입니다.
    3. su 형식 : su - user -c command argument
  2. 만약 w » /tmp/load.log를 09시부터 18시동안 30분 마다 실행하고 싶다면?
    0,30   09-18   *   *   *   uptime >> /tmp/load.log 
  1. crontab file은 각 entry마다 여섯개의 field로 구성되어있다.
  2. 각 필드는 space 나 tab으로 구분한다.
    분필드(0, 59)  시간필드(0,23)  일/월필드(1,31)  월필드(1,12)  일/주필드(0,6)  명령어라인  
    5             4              *               *            6              /usr/lib/newsyslog 
  3. 처음 다섯 필드는 다음 포맷을 가진다.
n n값과 일치
n,p,q n,p, or q와 일치
n-p n과 p 사이의 값과 일치
* 항상 일치
*/10 10분마다 맨처음값
*/1 1분마다 맨처음값

디렉토리 및 파일

  1. crontab 환경설정 디렉토리 : /etc/cron.d/
  2. crontab 로그저장 디렉토리 : /var/cron/
  3. crontab (현재 crontab file을 보기위해서는 crontab -l 을 사용)
    • cron daemon은 시스템 booting시에 자동으로 시작된다.
    • cron daemon은 /var/spool/cron/crontabs 디렉토리에 있는 crontab화일을 읽는다.
    • 이 명령어는 정해진 시간에 정규적으로 실행된다.(시간은 군대시간이다)
  4. root crontab file
    • /etc/cron.d/logchecker - /var/cron/log가 최대 화일 크기를 초과하는지를 판단하고, 만약 초과하면 내용을 /var/cron/olog로 복사한다.
    • /usr/lib/newslog - syslog daemon에 의해서 /var/adm 디렉토리에 생성되는 log file을 청소한다.
  5. Controlling crontab Access (cron utility를 제어하는 두개의 file)
    • /etc/cron.d/cron.allow
    • /etc/cron.d/cron.deny

User Access

  1. 만약 cron.allow file이 존재하면, 그 file에 적혀있는 user만이 crontab 명령어를 사용할 수있다.
  2. 만약 이 file이 없으면 crontab은 cron.deny file을 체크해서 user가 crontab 실행을 금지할 지를 결정한다.
  3. 만약 둘다 없으면 crontab은 root만 실행시킬 수 있다.
  4. daemon, bin, smtp, nuucp, listen, nobody, noaccess file은 crontab 사용할 수 없다.
  5. cron.allow file은 user가 만들어 주어야한다.

The crontab Command

  1. crontab 명령어는 crontab file을 수정, 삭제, 편집할 수있다.
  2. crontab 명령어는 user에대한 입력을 /var/spool/cron/crontabs/username에 저장한다.
  3. root 만이 다른 user의 crontab file을 읽고 편집할 수있다.
  4. root의 crontab file은 /var/spool/cron/crontab/root 이다.

The crontab file format

  1. crontab file은 각 entry마다 여섯개의 field로 구성되어있다. 각 필드는 space 나 tab으로 구분한다.
    #분필드(0, 59)  시간필드(0,23)  일/월필드(1,31)  월필드(1,12)  일/주필드(0,6)  명령어라인 
    5              4              *               *             6       /usr/lib/newsyslog 
  2. 처음 다섯 필드는 다음 포맷을 가진다.
n n값과 일치
n,p,q n,p, or q와 일치
n-p n과 p 사이의 값과 일치
* 항상 일치

How to Edit the User's crontab file

  1. 기본 Editor를 설정한다.
    $ EDITER=vi 
    $ export EDITOR  
  2. crontab file을 수정한다.
    $ crontab -e 
    20 15 * * 5 /usr/bin/banner "TIME TO GO!" > /dev/console 
    0 0 * * * /usr/bin/tar cvf /dev/rmt/0 /export/home/rickyd 
    :wq  
  3. 현재의 crontab file을 본다.
    $ crontab -l  
os/debian/cron.1187713536.txt.gz · 마지막으로 수정됨: 2007/08/22 01:25 저자 222.238.62.148