티스토리 뷰

반응형

 

 

크론탭이란?

특정 시간에 프로그램을 실행시키기 위해 사용
윈도우에서는 스케줄러와 비슷

 

 

크론탭

crontab -l : 예약된 작업리스트
crontab -e : 예약된 작업 수정
crontab -r : 예약된 작업 삭제
crontab -u 사용자명 : 루트관리자는 해당 사용자 crontab 파일을 보거나 삭제, 편집 가능

 

특수문자

  •  *  : 모든 값을 뜻합니다.
  •  ?  : 특정한 값이 없음을 뜻합니다. 
  •  -  : 범위를 뜻합니다. (예) 월요일에서 수요일까지는 MON-WED로 표현
  •  ,  : 특별한 값일 때만 동작 (예) 월,수,금 MON,WED,FRI 
  •  /  : 시작시간 / 단위  (예) 0분부터 매 5분 0/5
  •  L  : 일에서 사용하면 마지막 일, 요일에서는 마지막 요일(토요일)
  •  W  : 가장 가까운 평일 (예) 15W는 15일에서 가장 가까운 평일 (월 ~ 금)을 찾음
  •  #  : 몇째주의 무슨 요일을 표현 (예) 3#2 : 2번째주 수요일

 

주기 설정

  • 공백(space)으로 5개 값을 구분하여 설정
  • 요일에서 0과 7은 일요일
  • 1이 월요일 ~ 6이 토요일
*      *       *      *       *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

 분(0~59)을 설정. *을 설정한 경우 1분 단위로 실행
 시간(0~23)을 설정. *을 설정한 경우 매시간 실행
 일(1~31)을 설정. *을 설정한 경우 매일 실행
 월(1~12)을 설정. *을 설정한 경우 매달 실행
 요일(0~7)을 설정. *을 설정한 경우 월요일부터 일요일까지 매일 실행

 

주기 설정 예시

# 매분 testfile.sh 실행
* * * * * /home/test/testfile.sh
# 특정 시간 실행
# 매주 금요일 오전 5시 45분에 testfile.sh 를 실행
45 5 * * 5 /home/test/testfile.sh
# 반복실행
# 매일 매시간 0분, 20분, 40분에 testfile.sh 를 실행
0,20,40 * * * * /home/test/testfile.sh
# 범위 실행
# 매일 1시 0분부터 30분까지 매분 testfile.sh 를 실행
0-30 1 * * * /home/test/testfile.sh
# 간격실행
# 매 10분마다 testfile.sh 를 실행
*/10 * * * * /home/test/testfile.sh
# 5일에서 6일까지 2시,3시,4시에 매 10분마다 testfile.sh 를 실행
*/10 2,3,4 5-6 * * /home/test/testfile.sh
예시 설명
* * * * * 매일 매분마다 실행
5 * * * * 매일 매시간 05분에 실행
*/5 * * * * 매일 5분마다 실행
*/10 * * * * 매일 10분마다 실행
0 18 * * * 매일 18시 00분에 실행
15 18 * * * 매일 18시 15분에 실행
* 1 * * * 매일 01시 00분 ~ 01시 59분 사이에 매분마다 실행
0 */1 * * * 매일 1시간 간격으로 실행
0 */12 * * * 매일 12시간마다 실행
0 6,12 * * * 매일 06시, 12시에 실행
5 3-5 * * * 매일 03시 ~ 05시 사이 매시간 10분에 실행
(03시 05분, 04시 05분, 05시 05분)
15 6 15 * * 매달 15일 06시 15분에 실행
30 3 1,15 * * 매달 1일과 15일 03시 30분에 실행
0 18 * * 1 매주 월요일 18시 00분에 실행
0 6,12 * * 0,3 수, 일요일마다 06시, 12시에 실행
0 21 * * 1-6 월 ~ 토 21시 00분에 실행
0 11 11 11 11 ? 11월 11일 11:11마다

 

(크론표현식 사이트) Cron Maker : http://www.cronmaker.com/

 

 

 

크론탭 로깅

 크론탭 해당 처리 내역에 대해 로그로 남기고 싶을 때

* * * * * /home/test/testfile.sh > /home/test/testfile.sh.log 2>&1

# 매분마다 testfile.sh.log 파일이 갱신
* * * * * /home/test/testfile.sh >> /home/test/testfile.sh.log 2>&1

# 계속 로그가 누적이 되는 것을 확인
# 로그가 과도하게 쌓이면 리눅스 퍼포먼스에 영향을 주므로 가끔씩 비워주거나 파일을 새로 만들어줄 필요

 

반대로 로그는 필요 없는 크론

* * * * * /home/test/testfile.sh > /dev/null 2>&1
# 로그 필요 없는 크론

 

크론탭 백업

크론탭 내용을 txt 파일로 만들어 저장

crontab -l > /home/bak/crontab_bak.txt
# 크론탭 내용을 txt 파일로 만들어 저장
59 23 * * * crontab -l > /home/bak/crontab_bak.txt

# 백업을 자동화
# 매일 오후 11시 59분에 크론탭을 백업해두는 크론

 

 

 

반응형
댓글
반응형
공지사항