crontab 사용법

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

6. crontab 사용법

crontab: 특정 시간에 특정 프로그램을 주기적으로 수행시키는 프로그램 (리눅스, 맥 전용)

  • 설치

    • 리눅스: apt-get install cron
    • 맥북: 기본 내장
  • crontab 기본

    • crontab -e

      • 크론탭 설정 입력 파일 (vi 에디터 활용, 설정 입력 후 :wq 로 저장)
    • crontab -l

      • 현재 크론탭에 설정되어 있는 내용 확인
    • crontab -d

      • 현재 크론탭에 설정되어 있는 내용 삭제
  • crontab 설정

    • 요일에서 0과 7은 일요일, 1부터 6은 월요일부터 토요일

    • 주기별 예제
      • /root/scripts/status_check.sh 라는 쉘스크립트 파일이 있다고 가정하고 해당 파일의 주기적 실행
      • 매분 실행
        * * * * * /root/scripts/status_check.sh
        
      • 특정 시간에 실행
        • 매주 월요일 오전 6시 40분에 실행
          40 6 * * 1 /root/scripts/status_check.sh
          
      • 반복 실행
        • 매일 매시간 0분, 20분, 40분에 실행
          0,20,40 * * * * /root/scripts/status_check.sh
          
      • 범위 실행
        • 매일 오전 6시 10분부터 40분까지 매분 실행
          10-40 6 * * * /root/scripts/status_check.sh
          
      • 간격 실행
        • 매 20분마다 실행
          */20 * * * * /root/scripts/status_check.sh
          
      • 특정 여러 시각 실행
        • 10일에서 12일까지 4시, 5시, 6시 매 20분마다 실행
          */20 4,5,6 10-12 * * /root/scripts/status_check.sh
          
  • crontab 실행 팁

    • 로그(log) 남겨두기
    • 단, 로그가 많이 쌓이면, 서버 저장공간이 꽉차게 되고, 서버는 다운 또는 비정상동작을 보일 수 있으므로, 주기적으로 삭제
예)
*/20 * * * * /root/scripts/status_check.sh >> /var/log/status_check.log 2>&1
* * 1 * * rm -rf /var/log/status_check.log 2>&1

참고: HTTPS 무료 인증서 사용하기

  • 구글의 HTTPS 웹사이트 우선 정책으로 인해, 웹사이트 운영시 HTTPS를 지원해야 함
  • HTTPS 지원을 위해서는 인증서가 필요하고, 인증서 발급시 주기적 비용이 발생함
  • 무료 인증서를 제공하는 업체들이 있으나, 특정 기간마다 인증서를 재발급받아야 함
    • Let's Encrypt 서비스를 통해 무료 인증서를 발급 가능, 단 3개월마다 갱신 필요
    • 갱신 명령어를 crontab을 통해 자동 갱신 실행토록 설정
59 1 5 * * sudo /usr/bin/certbot renew