linux crontab 을 활용한 스케줄러 구현하기 (feat. 1일 1커밋)
포스팅의 내용
- 갑자기 어느 바람(?)이 불어 1일 1커밋을 약 2달째 실천하고 있다.
- 지금도 재미있게 하고 있긴 한데, ‘커밋을 위한 커밋’을 하게 되는 것 같다.
- 그럴 것 같으면 그냥 자동으로 구현해두고, 내 작업을 자유롭게 만들어주고 싶었다.
linux crontab 을 활용한 스케줄러 구현하기 (feat. 1일 1커밋)
서버 자원 선정하기
- 개인 PC, AWS 등 클라우드 리소스, 서버 PC 등 여러 선택지가 있다.
- AWS 의 가장 작은 EC2 로 가능하겠지만, 나는 개인 서버로 사용할 우분투 를 하나 구성해 두었기 때문에 이것을 활용하려 한다.
스크립트 작성하기
변경 사항 스크립트 (python)
- 매일매일 실행할 스크립트 main.py 를 간단한 파이썬으로 구현하였다.
- day.txt 라는 텍스트 파일을 하나 생성하고 오늘 날짜를 추가한다.
# main.py
from datetime import datetime
f = open("day.txt", 'a')
f.write(f'{str(datetime.today())}\n')
f.close()
커밋 스크립트 작성하기 (shell)
- 수정된 day.txt 를 자동으로 커밋해줄 쉘 스크립트 commit.sh 이다.
- main.py 를 실행하고, 변경 내용을 모두 커밋한다.
# commit.sh
python3 main.py
git add .
git commit -m "Today Commit"
git push origin
레포지토리 설정하기
- main.py 와 commit.sh 를 하나의 레포에 올려두고, 리눅스에서 그 레포를 clone 한다.
리눅스 설정하기
crontab
- 현재 crontab 설정 보기
crontab -l
- crontab 설정 수정하기
crontab -e
5 0 * * * /{pwd}/commit.sh >> /{pwd}/commit.sh.log 2>&1
- 매일 0시 5분에 commit.sh 를 실행한다.
- 실행 결과를 commit.sh.log 에 기록한다.
결과 확인
cat commit.sh.log
This post is licensed under CC BY 4.0 by the author.