본문 바로가기
컴퓨터공학/리눅스

[crontab] Linux에서 일정 시간마다 프로그램 실행되도록 설정하기

by 유리병 2023. 12. 8.

목차


     

     

    CRON이란 

    Unix계열 컴퓨터 운영체제의 시간 기반 스케쥴러이다. 

    특정 프로그램을 시간, 날짜 간격에 주기적으로 실행할 수 있도록 스케쥴링 하기 위해 cron을 사용한다

     

    30분에 한번씩 외부 데이터를 가져와서 DB에 넣는 프로그램을 수행한다거나 파일 백업을 수행할 때 유용하게 사용될 수 있다.

     

     

    CRON 스케쥴링 명령어

    CRON 어플리케이션 설정 명령어 

    • crontab -e : 실행할 크론 명령 수정
    • crontab -l : 실행할 크론 명령 확인
    • crontab -r : 크론 명령 제거 

    수행할 작업 설정 명령어

    • * * * * * hello.sh --> 1분마다 hello.sh를 실행
    • 0 4 * * * hello.sh --> 매일 04시에 hello.sh를 실행
    • 0 4 * * 1-5 hello.sh --> 월요일부터 금요일 04시에 hello.sh를 실행
    • */10 4 * * * hello.sh --> 매일 04시 10분, 04시 20분, 04시 30분,04시 40분,04시 50분에 hello.sh를 실행
    • 0 */6 * * * hello.sh --> 6시간 마다 hello.sh를 실행
    • 0 8 * * 0,6 hello.sh --> 토요일, 일요일 08시에 hello.sh를 실행

     

    Ubuntu 환경에서 CRON작업 수행하기

    여기서 사용하는 Ubuntu는 WindowPro Hyper-v를 통해 생성한 Ubuntu 가상환경입니다. 

    CRON으로 실행할 파일 생성 및 테스트 

    위처럼 hello.sh 파일을 실행한 결과를 hello.log파일에 출력하는 작업을 cron을 통해 반복적으로 수행하고자 한다. 

     

    CRON 설정

    crontab -e 명령어로 cron설정파일에 들어가서 1번을 누른다. 

     

    위와 같이 수행할 작업을 적고 ctrl + o로 저장 후 나간 후, 크론의 설정을 바꿨으니 sudo systemctl restart cron으로 크론을 재시작한다. 

     

    crontab -l로 우리가 설정한 크론 파일이 잘 들어갔나 확인할 수 있다.

     

    tail -f로 log파일 관찰하기

    이렇게 1분에 한번씩 로그들이 출력되는 것을 관찰할 수 있다. 

     

     

    CRON으로 수행시키는 작업 삭제하기

    crontab -r옵션으로 cron의 작업들을 싹 다 제거할 수 있다.

     

     

    Crontab과 로그아웃

    ubuntu환경에서는 계정을 로그아웃하면 crontab으로 설정해둔 것들이 삭제된다.

    /etc/crontab에 저장하면 로그아웃을 해도 삭제되지 않는다.

    이 파일에 저장할 cron 명령을 작성하면 된다. 

     

     

     

    MAC  환경에서 수행해보기

    CRON에 파일 접근 권한 부여하기

    cron 어플리케이션에 파일 접근권한을 부여하지 않을 경우 Operation not permitted라는 에러 메세지가 출력된다. 

     

    맥북의 환경설정 -> 개인정보 보호 및 보안 -> 전체 디스크 접근 권한 -> '+'버튼을 클릭 ->  열기창이 뜨면 'cmd + shift + G'를 누른다 -> 경로에 'usr/sbin/cron'으로 들어가서 cron 어플리케이션을 선택해서 권한을 부여해준다. 

     

    CRON설정

    맥북에 CRON이 하나도 설정되어있지 않을 경우

    맥북에 cron명령이 하나도 설정되어 있지 않을 경우 home directory로 가서 crontab -e를 설정해야한다.

    그렇지 않으면 작성된 cron파일이 없어 아래와 같은 에러메세지가 발생한다.

     

    Home directory로 가서 cron 설정

    CRON 동작 확인

    크론 설정 확인
    크론 동작 확인

     

    tail -f로 log파일 관찰하기