Engineering/Shell Script

크론탭(Crontab) 기본 사용법 정리

[앙금빵] 2021. 12. 3.

개요

스크립트를 매일, 일주일에 한번, 또는 한달에 한 번 같은 시간에 실행되도록 할 필요가 있을때가 있다. 매번 작업을 대기열에 올리는 대신 리눅스 시스템의 다른 기능을 사용할 수 있다.

크론 테이블은 작업이 언제 실행되어야 하는지를 지정할 수 있도록 특별한 형식을 사용한다.

Cron Jobs Schedule 조회

[ec2-user@test ~]$ crontab -l
no crontab for ec2-user

Crontab 예제 (vi 환경 출력)

# Crontab 수정 (vi 환경 출력)
[ec2-user@test ~]$ crontab -e

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (일요일 - 토요일; 특정 환경에서는 7도 일요일)
# │ │ │ │ │                                       
# │ │ │ │ │
# │ │ │ │ │
# * * * * *  command_to_execute

#1. 매주 토요일 7시 30분에 명령어 실행 
  30 07 * * 6 echo 'Hello' >> /tmp/test.txt

#2-1. 매일 1시, 15시에 명령어 실행 
  0 1,15 * * * echo 'Hello' >> /tmp/test.txt

#2-2. 매주 (수,금)요일 0시에 명령어 실행 
  0 0 * * 3,5 echo 'Hello' >> /tmp/test.txt

#3-1. 매일 5분 간격으로 명령어 실행
  */5 * * * * echo 'Hello' >> /tmp/test.txt

#3-2. 매 4월 간격으로 명령어 실행
  * * */4 * * echo 'Hello' >> /tmp/test.txt 

#4-1. 매시간 0시-5시 간격으로 명령어 실행
  * 0-5 * * * echo 'Hello' >> /tmp/test.txt

#4-2. 매월: 5-8월 기간동안 12:00시에 명령어 실행
  0 12 * 5-8 * echo 'Hello' >> /tmp/test.txt

Crontab 예제

# EX1.  매 30분 간격으로 Mon-Fri 9am-5pm
   */30 9-17 * * 1-5 echo 'Hello' >> /tmp/test.txt

# EX2. 매주 금요일 5pm 에 tmp 폴더를 비우기
0 5 * * 5 rm -rf /tmp/*

# EX3. 구글 드라이브 이미지 매일 정시에 백업
0 0 * * * rsync -a ~/Pictures/ ~/Google\\ Drive/Pictures/

참조

https://github.com/CoreyMSchafer/code_snippets/blob/master/Cron-Tasks/snippets.txt

댓글