본문 바로가기
클라우드 아키텍트 양성과정

리눅스(CentOS) 작업 스케줄러

by 종바깅 2021. 4. 26.

작업 스케줄러

일회성 작업 : at

  • atd 데몬에 의하여 동작

  • 일반 사용자/ 관리자 모두 사용 가능

    • /etc/at.allow : at를 사용할 수 있는 사용자
    • /etc/at.deny : at를 사용할 수 없는 사용자
      • /etc/at.allow 파일이 있을 경우: 이 파일 내에 기록된 사용자만 at 사용 가능
      • /etc/at.allow 가 없고 /etc/at.deny 파일이 있을 경우: at.deny에 명시된 사용자만 at 사용 불가
      • /etc/at.allow, /etc/at.deny 모두 없는 경우 : root만 사용가능
    • 작업을 예약한 사용자의 권한으로 예약작업 실행
    • 일반사용자는 자신의 작업만 조회가능
    • root는 모든 사용자의 작업 조회 가능
  • 예약된 작업은 별도의 Shell을 생성하여 수행됨 : echo와 같이 화면으로 출력하는 예약작업은 현재 터미널에 츨력되지 않음

  • 명령어 : at

    • #at [TIMESPEC]

    • timespec : /usr/share/doc/at-*/timespec 문서 참고

      • hh:mm - 24시간제로 표기하는 시간
      • hh:mm am/pm - 12시간제로 표기하는 시간
      • hh:mm yyyy-mm-dd - 년/월/일/시/분 표기
      • now +5min
      • teatime - 오후 16시, noon - 정오, tomorrow - 내일
    • -l : 예약된 작업의 목록 확인(=atq)

        3    Fri Mar 12 00:00:00 2021 a root
        # 3 : 예약된 작업의 번호
        # Fri Mar 12 00:00:00 2021 : 예약일자
        # a : queue 번호 (a~z)
        # root : 작업을 예약한 사용자
  • 작업 삭제 : atrm [작업번호]

  • at 설정을 통해 생성되는 파일 위치 : /var/spool/at/ 내에 스크립트 파일로 생성, 작업 예약한 사용자의 소유로 생성됨

주기적 작업 : cron

  • crond 데몬에 의하여 관리됨

  • 일반사용자/ 관리자 모두 사용 가능 : /etc/cron.allow, /etc/cron.deny

  • 명령어 : crontab

    • 작업 생성 및 수정 : crontab -e - vi편집기를 사용하여 작업내용 작성
    • 작업 조회 : crontab -l
    • 예약작업 전체 삭제 : crontab -r
  • 주기 예약 방식 : cat /etc/crontab

      # For details see man 4 crontabs
      # Example of job definition:
      # .---------------- minute (0 - 59)
      # |  .------------- hour (0 - 23)
      # |  |  .---------- day of month (1 - 31)
      # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
      # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
      # |  |  |  |  |
      # *  *  *  *  * user-name  command to be executed
    
      # 0  8  *  *  * command//매일 아침 8시 command 실행
      # 0  7  *  *  1 command//매일 월요일 아침 7시 command 실행
      # 30 14 * 6-8 * command//6월부터 8월까지 오후 14시 30분 command 실행
      # */214 *  *  * command//오후 2시 00분부터 3시 전까지 2분 간격으로 반복 command 실행
  • 시스템 cron

    • /etc/crontab 파일

    • /etc/cron.d 디렉토리 : 해당 디렉토리 내에 파일을 추가하여 수정

        * * * * * [사용자] [command] : 특정 사용자를 지정하여 command 수행
  • anacron

      cat /etc/anacrontab // 명령어 수행
    
      #period in days   delay in minutes   job-identifier   command
      1                    5            cron.daily            nice run-parts /etc/cron.daily
      7                    25        cron.weekly            nice run-parts /etc/cron.weekly
      @monthly     45        cron.monthly        nice run-parts /etc/cron.monthly
    
      # /etc/cron.(daily,weekly.monthly)(매일,매주,매월) 디렉터리 내에 스크립트 파일 생성하여 주기적으로 실행되는 스케줄러 생성 가능
    • 실행여부를 확인하고 누락되었을 경우 실행 가능할 때 다시 작업 수행

댓글