SRE/Linux Basics

cron, 크론탭

게임이 더 좋아 2022. 12. 2. 10:39
반응형
728x170

목적

  • 정기적으로 명령을 실행함
  • Time based Job Scheduling
  • systemd의 timer와 같은 개념(timer는 초 단위로도 실행 가능, 데몬 없이 서비스로 실행)

 

**일회성 예약 작업은 "at"으로 실행

 

관련 파일 경로

/etc/crontab

 

이러한 crontab 파일들은 시간,일,주,월 단위로 나누어져 관리됨

 

 


 

Cron Cycle

 

 

일반적으로 하는 작업(특정 시간에 특정 작업, 예약 작업)

  • 데이터를 정기적으로 백업
  • 데이터를 정기적으로 전송
  • 시간을 정기적으로 동기화
  • 웹 요청을 저장하고 사용자에게 완료 반환
  • 등등

 

 

 

형식, Format

순서대로 분, 시, 일, 월, 요일

** 0 이 일요일로 시작한다는 것을 주의

# 한 줄에 하나의 명령만 사용할 것
# 아래 X
* * * 5 5
/home/script/test.sh
# 아래 O
* * * 5 5 /home/script/test.sh

 

 


 

 

크론 명령어

  • $ crontab -e
    • 실제로 크론탭을 설정하여 실행할 명령어를 입력하는 부분
  • $ crontab -l
    • 크론탭에 등록된 내용들
  • $ crontab -r
    • 크론탭을 지우는 명령 (등록된 크론 작업 전부 삭제됨)

 

  • $ service cron start
    • 크론탭 작업 서비스 시작
  • $ service cron stop
    • 크론탭 작업 서비스 중지
  • $ service cron status
    • 크론탭 작동 확인

 

 


 

예시

일반적으로 쉘 스크립트를 주기적으로 실행

#test.sh 매 분마다 실행 (최소 시간 단위가 cron에서는 min)
* * * * * /home/script/test.sh

#금요일 퇴근 시간에 오후 5시 30분에 test.sh 실행(지정된 시간)
45 18 * * 5 /home/script/test.sh

#매일 0분, 20분, 40분에 test.sh 실행 (지정 시간을 여러 개를 두려면 comma 사용)
0,20,40 * * * * /home/script/test.sh

#매일 1시 1분부터 9분까지 매 분 tesh.sh 실행 (범위 시간을 사용하려면 dash  - 사용)
1-9 1 * * * /home/script/test.sh

#매 5분마다 test.sh 실행 (간격을 사용하려면 /{interval}  사용)
*/5 * * * * /home/script/test.sh

 

크론 로깅, Cron Logging

 

  • 크론하는 잡이 제대로 수행되는지 알기 위해 로그를 남김
 #test.sh 매 분에 실행, stdout 과 stderr test.sh.log에 저장(쌓이지는 않음)
* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1

#지속적으로 로그 저장(쌓임)
* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1

#로그가 필요가 없는 job이라면
* * * * * /home/script/test.sh > /dev/null 2>&1

**/dev/null 파일은 항상 비어있으며, /dev/null에 전송된 데이터는 제거됨
따라서 특정 명령어를 실행 후, 출력이 필요 없는 경우는 /dev/null에 출력을 지정함

 

 


 

**cron 수행 이력과 변경된 내용에 대한 로그는  아래의 경로에 있음

var/log/cron

 

$ cat var/log/cron

 

 


 

참고링크

 

https://devconnected.com/cron-jobs-and-crontab-on-linux-explained/

 

 

728x90
반응형
그리드형