보안접속
공지사항
질문과 답변
미확인입금자리스트
세금계산서 신청
트래픽 초기화 신청
자주하는 질문
팁&테크
자료실
  네임서버 정보
1차 : ns.k2com.co.kr
        211.239.173.145
2차 : ns2.k2com.co.kr
        211.239.112.50
  서비스 신청
  결제계좌안내
계좌 : 112-910015-50604
은행 : 하나은행
예금주 : (주)옐로우삭스
  고객상담센터
상담전화 : 02-552-5415
상담시간 :
    월-금요일 09:30~18:30
    토,일,공휴일 휴무
기본배너
Home > 고객지원센터 > 팁&테크
 
 
     팁&테크
작 성 자 눅스맨 날 짜 2005-03-17  조   회 5087 
제    목   [서버관리]주기적인 작업 실행하기
안녕하세요 눅스맨입니다.

서버에서는 반복적으로 실행할 필요가 있는 작업들이 많습니다.
대표적으로 주기적인 백업, 업데이트, 파일 및 디렉토리의 검사 등등
많은 예가 있을 수 있습니다.

여기서는 cron 데몬을 사용하여 간단한 작업들을 주기적으로 실행하도록
해보겠습니다.


1. 환경
   cron은 crond라는 데몬이 미리 구동되어 있어야 합니다.
   ]$ ps ax | grep crond

   만일 데몬이 구동되어있지 않으면 구동하도록 합니다.
   ]$ service crond start

   또한 서버 시작시 자동으로 실행되도록 설정합니다.
   ]$ chkconfig --level 35 crond on


2. 문법
    전부 6개의 필드로 구성되어 있으며, 각각 필드의 내용은 다음과 같습니다.
    
    분 : 0-59
    시 : 0-23
    날짜 : 0-31
    달 : 0-12
    요일 : 0-7 (0과 7은 일요일)
    실행명령어 

    한필드에 *문자가 올 수 있는데 그 단위 전체를 말합니다.
    각 숫자의 범위는 -(하이픈)을 사용하며, 앞에 숫자가 뒤에 숫자보다 작아야 합니다. 
    또한 값들의 나열은 ,(콤마)를 사용합니다.
    값의 범위를 지정할때는 특정 단위로 건너 뛸수 있는데 그 범위 다음에    /<숫자>를 
    사용합니다.

    매일 업무시간(09시~19시)내 2시간 간격과 저녁 11시에 어떤 작업을 실행할때에는
    00 09-18/2,23 * * *   이렇게 설정합니다.
    만약 날짜와 요일의 지정에서 중복되는 경우에는 설정이 모두 포함됩니다
    30  4  1,15 * 5
    이 설정은 매달1일, 15일 4시 30분에 실행되면서, 또한 매주 금요일도 함께 실행됨을
    의미합니다.


3. 간단한 예제
    매분마다 cdrom을 자동으로 빼고 약 3초뒤에 다시 자동으로 닫는 작업을 cron에 등록시켜보도록 하겠습니다.
    
    간단하게 하기 위해 명령어를 사용합니다.
    ]# crontab -e
  
    vi 편집모드에서 아래의 내용을 입력하고 저장합니다.
    --------------------------------------------------
    * * * * * /usr/bin/eject; sleep 3; /usr/bin/eject -t    
    --------------------------------------------------
    

4.  crontab 명령어를 사용하여 설정하는 방법
     목록 출력 
     ]$ crontab -l

     편집
     ]$ crontab -e  

     목록삭제
     ]$ crontab -r


5. /etc/crontab 설정파일을 사용하여 설정하는 방법
    /ctc/crontab 파일을 수정하도록 합니다.

    --------------------------------------------------  
    # run-parts
    01 * * * * root run-parts /etc/cron.hourly
    02 4 * * * root run-parts /etc/cron.daily
    22 4 * * 0 root run-parts /etc/cron.weekly
    42 4 1 * * root run-parts /etc/cron.monthly
    --------------------------------------------------  
  
    4.의 명령어 사용과 다른점은 6번째 필드가 그이후에 실행되는 명령어의 
    실행권한 유저입니다.
    run-parts는 그 디렉토리에 있는 실행파일을 실행하는 옵션입니다.
 

6. 서버의 시간을 타임서버와 동기화 하기
    매시 55분마다 타임서버의 시간과 동기화하고, 그시간으로 하드웨어 시간을 수정합니다.
    --------------------------------------------------  
    55 * * * * root rdate -s time.bora.net && hwclock -w
    --------------------------------------------------      

   
7. 매일 자정에 트래픽 초기화 하기
   아래의 팁&테크중 mod_throttle를 사용하여 도메인별 트래픽 관리하는 팁이 있습니다.
   그 내용중 일간 트래픽 관리시에 트래픽이 누적되지 않도록 하루에 한번 
   트래픽을 초기화하여야 합니다.
   이 작업을 매일 오후 11시 58분에 자동으로 초기화 하도록 설정하겠습니다.

   여기서는 lynx라는 간단한 텍스트 웹브라우저를 사용하여서 웹서버로 접근합니다.
   예) lynx --source http://도메인

   트래픽을 초기화 하기위한 URL을 먼저 확인합니다.
   http://서버도메인/throttle-status?content-type=text/html&refresh=60&view=status&command=reset,*
   위의 URL을 웹브라우저로 접근합니다.

   ]$ lynx --source http://서버도메인/throttle-status?content-type=text/html&refresh=60&view=status&command=reset,*

   모든 도메인의 트래픽이 초기화 되었는지 확인하실 수 있습니다.

   그러나 만약 트래픽 관리자 모드에 인증을 걸었다면 다음의 옵션을 추가해서 실행해야 합니다.
   아이디는 admin 비밀번호는 ResetAll  이라고 가정합니다.
  
   ]# vi /etc/traffic_reset.sh
   ----------------------------------------------------------------------------
   #!/bin/bash
   

   /usr/bin/lynx --source -auth=admin:ResetAll \
   "http://도메인/throttle-status?content-type=text/html&refresh=60&view=status&command=reset,*"  
   ----------------------------------------------------------------------------

   소유권 변경
   ]# chown root:root /etc/traffic_reset.sh

   퍼미션 변경
   ]# chmod 700 /etc/traffic_reset.sh

   /etc/crontab에 등록
   ]# vi /etc/crontab
   ----------------------------------------------------------------------------
   58 23 * * * root /etc/traffic_reset.sh >/dev/null
   ----------------------------------------------------------------------------

   이제 매일 저녁 23시 58분에 자동으로 전체 트래픽을 초기화 합니다.
 

   다음번 팁에서는 백업과 시스템 검사하는 작업등을 다루어 보도록 하겠습니다.