Linux

crontab 이용하기

일단해볼게 2023. 11. 26. 20:27

목적

  • 정기적으로 명령을 실행함
  • 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
    • 크론탭 작동 확인

 

 

 


 

크론 @keyword

 

  • @reboot: 부팅 시에 한 번 실행됨(Reboot 포함)
  • @yearly or @annually: "0 0 1 1 *".
  • @monthly: "0 0 1 * *".
  • @weekly: "0 0 * * 0".
  • @daily or @midnight: "0 0 * * *".
  • @hourly: "0 * * * *".

 

 

 

 

 

 

 


 

예시

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

 

 

crontab
#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/

'Linux' 카테고리의 다른 글

Service 생성하기  (0) 2023.11.26
systemd 훑어보기  (0) 2023.11.26
chown, chmod 이용하기  (0) 2023.11.26
rsync 이용하기  (1) 2023.11.26
curl에 대한 모든 것  (1) 2023.11.24