cron: 소프트웨어 유틸리티로, 유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러이다. 고정된 시간, 날짜, 간격에 주기적으로 작업을 실행하도록 한다.
wiki백과 - cron
나는 24시간 돌아가는 서버에서 내가 퇴근하고 나서도 일정 주기마다 코드가 실행되도록 하기 위해 cron을 사용했다.
crontab
은 cron 작업을 설정하는 파일이다.
CentOS7
은 /var/spool/cron/사용자ID
에서 등록된 작업들을 확인할 수 있다.
$ crontab -l # 현재 크론탭 내용 확인
$ crontab -e # 크론탭 내용 편집 ( vi와 사용법 동일 )
$ crontab -r # 그론탭 삭제
# crontab -e 실행
* * * * * [명령어]
분 시 일 월 요일
이게 기본 구조이다. 반복하고자 하는 주기를 분(0~59)
, 시(0~23)
, 일(1~31)
, 월(1~12)
, 요일(0~7)
순으로 숫자를 적어주고, 반복하고자 하는 명령어를 뒤에 적어주면 된다. (요일에서 0,7은 일요일, 1이 월요일, 6이 토요일 이라고 한다.)
# 매 분 마다 /home/check.sh 실행
* * * * * /home/check.sh
# 매주 금요일 오전 3시 30분에 /home/check.sh 실행
30 3 * * 5 /home/check.sh
# 매일 매 시간 0분, 20분, 40분에 /home/check.sh 실행
0,20,40 * * * * /home/check.sh
# 매일 오전 4시 0분부터 30분까지 매 분 마다 /home/check.sh 실행
0-30 4 * * * /home/check.sh
# 매 10분마다 /home/check.sh 실행
*/10 * * * * /home/check.sh
# 주석
# 이렇게
내가 관리하는 사이트는 실시간 로그를 db에 저장하고 띄워주는 사이트이므로, 매 10분마다 로그를 실시간으로 파싱하여 db에 저장하는 데몬 코드가 정상적으로 동작 중인지 확인하는 코드를 실행하고, 정상적으로 동작하지 않으면 다시 시작시키는 코드를 crontab에 등록했다.
그리고 매일 0시 1분마다 daemon을 중지 후, 재시작 하도록 했다.
참고로, 제일 위의 0 0 * * * rdate -s time.bora.net
은 리눅스 서버에서 타임서버와 시간을 동기화 시켜서 현재 실제 시간을 유지하도록 하는 코드이다.
성공 ~