0. 전체 흐름
- 전원
- init 데몬
- crond 실행
- var/spool/cron
- crontab 파일읽기(cron.hourly, cron.daily, cron.weekly, cron.monthy)
- var/log/cron
1. cron은 왜 사용해?
- 주어진 일정에 따라 특정 셀 명령어들을 실행해야 할때 사용한다.
- 예를 들어, 주기적으로 backup을 한다거나, 서버에서 특정 데이터를 받아온다거나..
- 단순 반복적인 작업은 컴퓨터에게 시키고 싶어..
2. 그럼 cron은 무엇인가?
- 왜 사용하는지에 대한 이유가 cron이 무엇인가를 잘 설명한다.
- 유닉스 계열 컴퓨터 운영체제의 시간 기반 잡 스케줄러이다. 소프트웨어 환경을 설정하고 관리하는 사람들은 작업을 고정된 시간, 날짜 간격에 주기적으로 실행할 수 있도록 스케줄링하기 위해 cron을 사용한다.(https://ko.wikipedia.org/wiki/Cron)
3. 어떻게 동작하는가?
- ps -ef | grep crond
- 데몬형태로 background에서 동작하는 것을 확인할 수 있다.
- cat /etc/rc#.d
- crond 시작 directory
- crontab은 crond에게 사용자가 구동하고자하는 것과 언제 구동하고 싶은지를 알려준다.
3. 어떻게 사용하는가?
- find /etc - name crontab
- 어디에 있는가?
- cat /etc/crontab
- 어떻게 사용하는가?
- cron은 셸 명령어들이 주어진 일정에 주기적으로 실행하도록 규정해놓은 crontab (cron table) 파일에 의해 구동된다.
- 맥의 경우 /var/spool/cron/crontab에 위치해 있다.
- 사용자를 위한 구성파일은 crontab -e를 호출해서 편집할 수 있다.
- 사용법(cat /etc/crontab)
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
-
/user/sbin/anacron
- cron과 같이 동작하는 프로그램으로 서버가 일정 시간 중지되었을 때에도 작업이 실행되는 것을 보장하기 위해 사용하는 도구
-
각 필드 세부사항
- * : 해당 필드의 모든 값 ex) 매일, 매월 ...
- '-': 그 사이의 모든 값 ex) 1-5, 1일 ~ 5일
- , : 지정 값 ex) 1,3,5 1시,3시,5시
- / : 특정 주기로 나눌 때 사용
-
옵션
-
/etc/cron.daily, /etc/cron.weekly /etc/cron.monthy
- 시스템크론설정 디렉터리로 cron은 실행할 내용을 시스템크론설정디렉터리에 넣어 놓고 작동.
-
/var/log/cron
- 실행 내용 기록 로그 볼 수 있음
-
/etc/cron.allow, etc/cron.deny
- 접근 허용 도는 금지를 할 수가 있다.
4. 멈추기
- 멈추기 /etc/init.d/cron stop
- 시작 /etc/init.d/cron start
- reboot 후에도 멈추게 하려면 아래의 명령도 추가
- sudo systemctl disable cron
5. 문제
https://docs.google.com/presentation/d/1fjxmm06BFQHJVbMRlxuOdQwNyp1wh_bLo6l6xdwXa6c/edit#slide=id.ge1955242cc_0_78
6. references