OS/UNIX&LINUX

Crontab 정리

beeimp 2022. 2. 5. 23:59

crontab은 윈도우에서 스케줄러와 유사합니다. 특정 시간에 특정 작업을 실행할 경우 사용합니다.

기본적인 명령어는

명령어 설명
crontab -e 실행할 작업 등록 및 편집
crontab -l 실행할 작업 확인
crontab -r 모든 작업 삭제

crontab -e 를 실행 후 작업

  • crontab 편집기에서 다음과 같이 작성하면 됩니다.
*(분 0-59) *(시 0-23) *(일 1-31) *(월 1-12) *(요일 0-7) <작업 내용>
  • 예시를 살펴보면
    # 1분 마다 a.sh 실행
    * * * * * * /home/a.sh
    
    # 10분 마다 b.sh 실행
    */10 * * * * /home/b.sh
    
    # 매주 월요일 9시 마다 c.sh 실행
    0 9 * * 1 /home/c.sh
    
    # 매일 9시 부터 9시 30분까지 d.sh 실행
    0-30 9 * * * /home/d.sh
    
    # 1일에서 10일 까지 9시, 12시, 15시, 18시에 정각부터 30분까지 e.sh 실행
    0-30 9,12,15,18 1-10 * * /home/e.sh
    
    # reboot 될 때마다 f.sh 실행
    @reboot /home/f.sh

주의사항

  • crontab은 shell에서 동작합니다
    - bash에서 동작하기 위해서 다음 내용을 추가해야 합니다.
SHELL = /bin/bash
  • crontab에서는 환경변수가 초기화되어 실행합니다.
    - 파이썬 파일을 10분마다 실행하고 싶었는데, 파이썬 환경변수가 초기화되어 crontabl 안에서 설정해줘야 합니다.
    - 다음 내용을 추가해줬었습니다.
USER = ubuntu
SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin:$HOME/bin
PYTHONPATH = <파이썬경로>
  • 제대로 동작하지 않을 시 cron이 올바르게 실행되고 있는지 확인합니다.
sudo service cron status