Cron & CronTab 이란?
Cron이란 유닉스 계열에서 시간 기반 Job Scheduler로 주기적인 시간 or 날짜 마다 실행 하는 것
윈도우에서는 작업 스케쥴러라는 명칭을 많이 씀
🎈 Cron
주어진 스케줄 마다 쉘 명령어를 실행하는 주체
cron : the name of the tool
🎈 CronTab
cron 데몬들에 대한 명령어들이 보관된 작업 목록(+Cron 작업에 대한 설정)을 의미
crontab is generally the file that lists the jobs
🎈 CronJob
크론이 실행되어 크론 탭에 쌓이면, 그러한 행위들을 크론잡
cron will be executing, and those jobs are cronjobs.
실행 방법
1. Linux 자체 Cron 이용
# linux 방식 - 해당 파일에서 값 수정
## example
# minute hour day month week job
# 0,30, * * * * ls -ef | grep python
$ crontab -e 에 들어가 위 설정 내용을 작성하고 나오면 끝
2. Framework의 Crontab들 이용
django의 django-crontab이나 flask의 flask-crontab 등이 존재함.
django CronTab 예시
# 단 django crontab의 경우 linux에서만 가능
$ pip install django-crontab
# settings.py
INSTALLED_APPS = (
'django_crontab',
...
)
CRONJOBS = [
('* * * * *', 'app.cron.hello_every_minute', '>> /tmp/log/cron.log'),
]
# cron.py
def hello():
print('hi')
$ python manage.py crontab add # 등록
$ python manage.py crontab show # crontab 진행중 확인
$ python manage.py crontab remove # 삭제시
3. celery의 beat 사용
4. Kubernetes의 CronJob(배치잡) 이용
kubernetes에서는 cronjob 이란 유닉스의 CronTab과 같은 유사한 기능을 제공한다. ex) 야간 등 트래픽이 비교적 적은 시간에 클러스터의 리소스를 활용하여 배치 작업을 처리
cronJob.yaml 파일
# cronjob.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: showdate
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: showdate
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello cronjob
restartPolicy: OnFailure
# CronJob 실행
$ kubectl create -f cronjob.yaml
# CronJob 확인
$ kubectl get cronjob
'기술 정리 & CS > 기타 지식' 카테고리의 다른 글
Mac 단축키 (일반, IDE) (0) | 2023.06.05 |
---|---|
[UUID] UUID 란? (with. Python, JS) (0) | 2022.07.22 |
[단축키] VSCode 단축키 (0) | 2022.06.27 |
[외부 API] Daum 주소 찾기 API (0) | 2022.06.09 |
Font Awesome 이용법 (아이콘, ICON) (0) | 2022.04.28 |