
crontab은 Linux 운영체제에서 시간 기반 잡 스케줄러이다.
쉽게 얘기해서 원하는 시간에 원하는 작업을 수행하게끔 해주는 작업 스케줄러라고 보면 된다.
예를 들어서 매일 밤 10시만 되면 배가 고픈 나는
항상 10시에 배달의 민족에 들어간다고 가정하자(가정이 아닐 수도 있다.)
그런데 매일마다 배달의 민족에 들어가는게 너무 귀찮아서
자동으로 밤 10시만 되면 배달의 민족 앱이 켜졌으면 좋겠다.
그 기능을 대신 해주는 것이 바로 🎊crontab!!
이 강력한 crontab 기능을 무려 django에서도 쓸 수 있다.
먼저 다음 명령어를 통해 django-crontab을 설치해 준다.
pip install django-crontab
설치가 완료되면 django 프로젝트의 settings.py의 INSTALLED_APPS에 해당 앱을 등록해 준다.

그리고 해당 앱 폴더 안에 주기적으로 실행할 파일을 작성해 준다.
나의 경우에는
config/cron.py으로 만들었다.
⚠️잘 모르겠으면 그냥settings.py와 같은 위치에 생성하자⚠️my_project ㄴconfig ㄴ__init__.py ㄴsettings.py ㄴurls.py ㄴcron.py <-- 'Here's my sweety cron🐥' ㄴapp1 ㄴapp2 ㄴapp3

cron.py의 내용이다. 나는 일단 현재 진행중인 프로젝트에다가 적용시켜 보았다. 아무 테이블이나 불러와서 첫번째 객체를 삭제시키는 작업을 할 것이다. 아래는 log파일에 찍히는 내용들이다.
다 작성했으면 다시 settings.py로 돌아가서 다음을 추가하자.

여기서 잠깐 cron의 개념을 짚고 넘어가자면
(* * * * *)다섯 개의 작업 시간 단위가 있다.
왼쪽부터 순서대로(분 시 일 월 요일)이다.- 분 : 0 - 59 - 시 : 0 - 23 - 일 : 1 - 31 - 월 : 1 - 12 - 요일 : 0 - 7 ㄴ(1 - 7은 월요일 - 일요일이고 0도 일요일이다)각 시간의 단위는 공백으로 구분한다.
*은 매 분, 시, 일, 월, 요일 을 뜻한다.
,는 &를 의미-는 기간, 동안을 의미*/숫자는 간격을 의미
* * * * * /home/test.sh
test.sh파일 실행test.sh파일 실행10 * * * * /home/test.sh
test.sh파일 실행30 * 5,15 * * /home/test.sh
test.sh파일 실행*/5 * * * 1 /home/test.sh
test.sh파일 실행0-30 5 * * * /home/test.sh
test.sh파일 실행다시 django로 돌아와서

위에서 본 이 코드의 의미는
({작업 시간 단위}, {실행할 파일, 작업, 행동 등}, {작성할 Log 파일})이다.내 cronjob의 경우 1분 간격으로
DeleteFirstObject라는 파일을 실행하고schedule.log파일에 저장한다는 의미이다.
모든 준비가 완료되었다.
터미널에서 manage.py가 존재하는 위치로 이동해서 다음 명령어를 입력해보자.
python manage.py crontab add
그러면 접근하는 것을 허용할 것인지 물어보는데 확인을 누르면 당신의 cron 작업이 활성화 된다.
python manage.py crontab show
이 명령어는 등록된 crontab의 목록을 볼 수 있다.
python manage.py crontab remove
cron작업들을 모두 지우고 싶으면 remove명령어로 지울 수 있다.

크론들이 작업해 줄 파일 코드이다. django ORM을 실행해 줄 것이고 삭제가 되었다는 문구와 삭제된 시간을 출력할 것이다.

1분 마다 테이블의 객체 하나씩 지우도록 설정해 놓고 딴 짓하고 돌아왔는데 싹다 먹어 치웠다....ㅠㅠㅠㅠ

나의 로그 파일이다. 고생한 나의 크론에게 박수를 보내고 희생당한 나의 테이블 데이터들에게 조의를 표하며 글을 마친다.