정보

    • 업무명    : 쉘 스크립트 스케쥴링을 위한 크론탭 (crontab) 설정

    • 작성자    : 이상호

    • 작성일    : 2021-01-17

    • 설   명    :

    • 수정이력 :

     

     내용

    [개요]

    • 안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.

    • 오늘 포스팅에서는 스케쥴링을 위한 크론탭 (crontab) 설정을 소개합니다.

     

     

    [특징]

    • 리눅스에서 스케쥴링을 위해서 쉘 스크립트 기술이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

     

    [기능]

    • 크론탭 설정

    • 크론탭 서비스 재시작

    • 로그 확인

     

    [활용 자료]

    • 없음

     

    [자료 처리 방안 및 활용 분석 기법]

    • 없음

     

    [사용법]

    • 소스 코드 참조

     

    [사용 OS]

    • Linux (CentOS v7.3)

    • VMware Workstation Pro v15.5

     

    [사용 언어]

    • ShellScript (bash)

     

     소스 코드

    • 소스 코드는 단계별로 수행하며 상세 설명은 다음과 같습니다.

    • 작업 환경의 경우 수행 쉘, 입력 자료, 출력 자료로 구성되어 있습니다.

      디렉터리명 파일명
    작업 경로 prjDir=/SYSTEMS/PROG/ShellScript
     
    수행 쉘 ${prjDir} Test-Cron.sh
    출력 자료 ${prjDir} List

     

     

    [명세]

    • [1 단계] 수행 쉘 실행 및 파일 조회

      • bash Test-Cron.sh "$(date +'%Y-%m-%d %H:%M')" 명령어를 통해 쉘 실행

      • List 목록 결과 확인
    #!/bin/bash
    
    echo $1 $2 $3 >> /SYSTEMS/PROG/ShellScript/List

     

     

    • [2 단계] 크론탭 (crontab) 설정

      • crontab -e 명령어를 통해 스케쥴링 등록/수정

      • 좌측에서 [분] [시간] [일] [월] [요일] 수행 명령어 입력 파라미터로 입력

        • 분 : 0-59까지의 숫자

        • 시간 : 0-23까지의 숫자

        • 일 : 1-31까지의 숫자

        • 월 : 1-12까지의 숫자

        • 요일 : 숫자로서 0과 7은 일요일, 1부터 차례대로 월, 화, 수, 목, 금, 토요일

        • 수행 명령어 : 전체 경로를 지정 (추천)

    # crontab -l
    0 0 * * * rdate -s time.bora.net
    0 0 * * * bash /SYSTEMS/PROG/ShellScript/RunShell-URL-API.sh "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days ago')" "$(date +'\%Y-\%m-\%d \%H:\%M')"
    * * * * * bash /SYSTEMS/PROG/ShellScript/Test-Cron.sh "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days ago')" "$(date +'\%Y-\%m-\%d \%H:\%M')" "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days')"

     

     

     

     

    Crontab.guru - The cron schedule expression editor

    loading... Cron job failures can be disastrous! We created Cronitor because cron itself can't alert you if your jobs fail or never start. Cronitor is easy to integrate and provides you with instant alerts when things go wrong. Learn more about cron job mon

    crontab.guru

     

    • 스케쥴링 설정 예시

    # 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
    
    # 23:43에 실행
    43 23 * * *
    
    # 05:12에 실행
    12 05 * * *
    
    # 17:00에 실행
    0 17 * * *
    
    # 매주 월요일 17:00에 실행
    0 17 * * 1
    
    # 0,2,3 매주 일, 화, 수요일 17:00 17:10에 실행
    0,10 17 * *
    
    # 매월 1 일 17:00부터 17:10까지 1 분마다 실행
    0-10 17 1 * *
    
    # 1 매월 1 일과 15 일 및 월요일 0:00에 실행
    0 0 1,15 * 
    
    # 매월 1 일 4:42 분에 실행
    42 4 1 * *
    
    # 월요일부터 토요일까지 21:00에 실행
    0 21 * * 1-6 
    
    # 10 분마다 실행
    0,10,20,30,40,50 * * * *
    
    # 10분마다 실행
    */10 * * * * 
    
    1:00에서 1:59까지 1 분 간격으로 실행
    * 1 * * * 
    
    # 1:00에 실행
    0 1 * * * 
    
    # 매시 0 분에 1 시간 간격으로 실행
    0 */1 * * *
    
    # 매시 0 분에 1 시간 간격으로 실행
    0 * * * * 
    
    # 8:02, 11:02, 14:02, 17:02, 20:02에 실행
    2 8-20/3 * * * 
    
    # 1일과 15일 5:30에 실행
    30 5 1,15 * 

     

    • [3 단계] 크론탭 서비스 재시작

      • systemctl 명령어를 통해 서비스 상태 확인 및 재시작

    # 상태 확인
    systemctl status crond.service
    
    # 재시작
    systemctl restart crond.service

     

     

    • [4 단계] 로그 확인

      • tail 명령어를 통해 크론탭 확인

    tail -f /var/log/cron

     

     

    • [5 단계] 수행 결과 확인

      • tail 명령어를 통해 목록 확인

    tail -f List

     

     

    [전체]

    • Test-Cron.sh

    #!/bin/bash
    
    echo $1 $2 $3 >> /SYSTEMS/PROG/ShellScript/List

     

     참고 문헌

    [논문]

    • 없음

    [보고서]

    • 없음

    [URL]

    • 없음

     

     문의사항

    [기상학/프로그래밍 언어]

    • sangho.lee.1990@gmail.com

    [해양학/천문학/빅데이터]

    • saimang0804@gmail.com
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기