ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • job schedule 관리
    Technique/LPIC 2019. 10. 27. 21:24
    반응형

    시스템 운용에는 백업이나 로그파일의 관리 등 메인터넌스 작업이 필요하다. 정기적으로 실시하는 작업에 대해서는 자동적으로 실행되도록 설정하는 것으로 인해 시스템 관리 코스트를 삭감하는 것이 가능하다. Linux에는 정기적인 실행을 하는 job으로는 cron을 1회 만의 job의 예약을 할 경우에는 at커맨드를 사용하여 스케줄링이 가능하다.

     

    cron 

    정기적인 작업을 실행하는 cron은 스케줄링을 관리하는 데몬인 crond와 스케줄링을 편집하는 crontab 커맨드로 구성된다. crond 데몬은 1분 단위로 crontab 파일을 확인하여 실행대상의 스케줄의 존재를 확인하여 실행한다.

    유저의 crontab

    유저의 crontab 파일은 /var/spool/cron 디렉토리 이하에 놓여 있다. 예를 들어 student 유저라면 /var/spool/cron/student 또는 /var/spool/cron/crontabs/student 와 같은 파일이 존재한다. 하지만 에디터를 이용한 직접 편집은 불가능하다 crontab 파일을 편집하기 위해서는 crontab 커맨드를 사용한다

     

    crontab [옵션]

     

    옵션 설명
    -e 에디터를 사용하여 crontab 파일을 편집한다.
    -l crontab 파일의 내용을 표시한다.
    -r crontab 파일을 삭제한다.
    -i crontab 파일 삭제시 확인한다.
    -u 유저명 유저를 지정하여 crontab파일을 편집한다 ( root 유저만 가능 )

    cron job을 실행할 경우에는 -e 옵션을 지정하여 실행한다.

    crontab 파일의 서식은 아래와 같다. 다양한 필드에 매치한 시간이 맞아떨어진다면 해당 커맨드가 실행된다.

     

    분 시 일 월 요일 커맨드

     

    필드 내용
    0 ~ 59 내의 정수
    0 ~ 23 내의 정수
    1 ~ 31 까지의 정수
    1 ~ 12 까지의 정수 또는 jan ~ dec 까지의 문자열
    요일 0 ~ 7 까지의 정수 ( 0, 7요일 ~ 6:토요일 ), 또는 sun, mon 등의 문자열
    커맨드 실행될 커맨드

    복수의 커맨드를 실행할 경우에는 [,]로 구분할 수 있다. 

    시스템의 crontab

    유저의 crontab 파일과 별도의 시스템 용의 crontab파일 ( /etc/crontab)도 있다. /etc/crontab 파일에는 일반적으로는 거기서부터 /etc/crontab.* 디렉터리에 들어가 있는 파일을 부르는 것으로 되어 있다. /etc/crontab 파일에는 실행 유저명을 지정하는 필드가 더해진다.

    이 설정에는 1시간 단위로 /etc/cron.houly 디렉터리 이해의 crontab 파일을 1일 단위로 /etc/cron.daily디렉토리 이해의 crontab 파일을 1주일간의 /etc/cron.weekly 디렉토리 이하의 crontab 파일을 1개월 단위의 /etc/cron.monthly 디렉토리 이해의 crontab 파일을 실행하는 것으로 되어 있다.

    run-parts커맨드는 실행한 디렉토리 내에 있는 스크립트나 실행 파일을 실행하는 커맨드이다.
    파일/디렉토리 설명
    /etc/crontab 시스탬의 crontab 파일
    /etc/cron.d 각종 cron job을 기록한 파일을 모아두는 디렉토리
    /etc/cron.houly 1시간에 1번 실행된 cron job 을 기록한 파일을 저장한 디렉토리
    /etc/cron.daily 1일에 1번 실행된 cron job 을 기록한 파일을 저장해둔 디렉토리
    /etc/cron.weekly 주에 1회 실행되는 cron job 을 기록한 파일을 저장해둔 디렉토리
    /etc/cron.monthly 월에 1회 실행되는 cron job 을 시록한 파일을 저장해둔 디렉토리
    /var/spool/cron 또는 
    /var/spool/cron/crontabs
    유저의 crontab 파일을 저장한 디렉토리

    anacron

    cron은 1분 단위로 실행 스케줄을 체 그 하고 있지만, 지정된 시열에 시스템이 가동되지 않은 경우 해당 job 은 실행되지 않는다. 이러한 경우를 위해 anacron이라는 방법이 준비되어 있다. anacron을 사용하면 시스템 정지 중에 지나쳐버린 스케줄을 실행하는 것이 가능하다. anacron의 스케줄링은 /etc/anacrontab 에 기록되어 있다.

    RANDOM_DELAY=45 : 랜덤으로 늦어질 수 있는 최대치
    START_HOURS_RANGE=3-22 : 3 ~ 22시의 사이에만 실행된다.
    실생 간격일 수 실행 시기 시간(분) 실행일의 기록 파일 실행 커맨드

     

    • 전회의 실행된 뒤로부터 1일 이상 경과한 job을 실행한다.
    • 실행하기까지 5분간 대기한다 ( 이것에 RANDOM_DELAY를 지정된 범위로 랜덤으로 늦어지는 값 )
    • 실행일을 cron.daily 파일에 기록한다.
    • nice 커맨드 붙인 채로 run-parts커맨드를 실행한다.

    이런 의미가 된다. crontab에는 1분 단위로 실행 타이밍이 지정되는데 anacrontab에는 실행 타이밍은 지정할 수 없다. 또한 서버 측에 job의 실행 타이밍이 분산 가능하도록 실행 타이밍을 랜덤으로 늦쳐지도록 하는 것이 가능하다.

    Red Hat Enterprise Linux 6나 CentOS 6 이후에는 일지/주차, 월차의 job은 anacron이 처리하고 그 외의 job은 cron이 처리하도록 설정되어 있다.

    at 커맨드

    cron이 정기적인 반복 실행을 하는 job을 다룬다고 한다면, at 커맨드는 1회만 실행하는 스케줄링을 다룬다. at 커맨드에 따라 스케줄링을 실행하는 것은 at 데몬 (atd)가 동작하고 있어야 한다.

     

    at 옵션
    at [-f 파일명 ] 일시

     

    옵션 설명
    -d job / -r job 예약중의 job 을 job 번호로 지정하여 삭제한다 ( =atrm )
    -l 예약중의 job을 표시한다 (=atq)
    -f 커맨드를 기록할 파일을 지정한다.

    at 커맨드는 대화식이며 커맨드를 지정한다. 일시를 지정하면 입력 모드가 된다. Ctrl + D 키로 커맨드의 입력을 종료한다.

    커맨드를 대화식으로 입력하는 것이 아니라, 텍스트 파일에 커맨드를 기록하는 것으로 해당 파일을 지정하는 방법도 있다.

     

    at -f my_job 23:30

     

    지정일시 서식
    오후 10시 20:00, 10pm
    정오 noon
    새벽 midnight
    오늘 today
    내일 tomorrow
    3일 후 now + 3 days
    2주 뒤의 22:00 10pm + 2 weeks

    -l 옵션을 사용하면 예약 중의 job을 이치란으로 표시하는 것이 가능하다. 똑같은 동작을 하는 atq 커맨드도 있다. -d 옵션 또는 -r 옵션을 사용하면 예약중의 job 을 job 번호로 지정하여 삭제 가능하다. 같은 방법으로 동작하는 atrm 커맨드도 있다.

    반응형

    'Technique > LPIC' 카테고리의 다른 글

    시스템 락의 설정  (0) 2019.10.29
    cron과 at의 접근제한  (0) 2019.10.29
    유저와 그룹의 관리  (0) 2019.10.27
    접근성  (0) 2019.10.22
    LightDM 의 설정  (0) 2019.10.22

    댓글

Designed by Tistory.