드디어! 매일 파일이 하나씩 자동 생성되어 github에 commit, push하는 sh파일을 만들고 crontab으로 스케줄링을 걸것입니다.
실습해보실 분들은 제가 앞에서 포스팅한 글을 참고해 EC2의 ubuntu를 이용하는 방법부터 보시면 됩니다 :)
[Git PUSH 자동화(1)] AWS - EC2시작하기
[Git PUSH 자동화(2)] EC2에 PuTTY로 SSH 접속하기
Crontab이란?
시스템 관리자는 보안이아 시스템의 관리 등을 위해 주기적으로 동일한 작업을 반복 수행해야함
cron이란 리눅스에서 특정 시각에 명령이나 프로그램이 수행되도록 하는 리눅스용 작업 스케줄러이다
미리 구성된 시간에 실행되도록 작업을 할당하는 스케줄링 도구가 크론이다.
이것으로 일정한 간격으로 시스템에서 수행될 일들을 자동화 할 수 있다!
명령어 입력
1. git 설치
$sudo apt-get install git
$git --version
$git config --global user.name "yeafla530"
$git config --global user.email "yeafla530@naver.com"
2. SSH key생성
$ ssh-keygen -t rsa -C "yeafla530@naver.com"
# 엔터 3번이상 치기
$ cat /home/ubuntu/.ssh/id_rsa.pub
# ssh-rsa AAAAB.... 내용을 복사합니다
3. ssh key 생성후 Git SSH에 추가
ssh key를 복사해 Git에 접속 후
Settings > SSH and GPG keys > SSH keys > New SSH key > 추가 후 저장
4. 새로운 repository 생성 > git clone ssh type 설정
SSH git repository 주소 복사
복사후 붙여넣기 시에 ctrl+v가 아닌 shift+insert키를 이용해 넣어주시면 됩니다
# ssh git repository 주소를 clone 한다.
$ git clone git@github.com:yeafla530/git-diary.git
5. 스케줄링 sh파일 작성
# 폴더생성
$mkdir git-sch
# git-sch 진입
$cd git-sch
# git-sch.sh 파일생성
$vi git-sch.sh
git-sch라는 디렉토리 안에 스케줄링 쉘(sh) 파일을 만들어 넣어놓는다
git-sch.sh 파일 내용은 다음과 같다..!
# git-sch.sh
Y=$(date +%Y)
M=$(date +%m)
D=$(date +%d)
Ym=$Y-$M
Ymd=$Y-$M-$D
GitRep="git-diary"
HomeDir="/home/ubuntu"
GitDir="$HomeDir/$GitRep"
FileDir="$HomeDir/$GitRep/$Ym"
FileNm="$Ymd".md
mkdir -p $FileDir
echo "### $Ymd 일기" >> $FileDir/$FileNm
cd $GitDir
git add .
git commit -m "commit $FileNm"
git push origin master
글을 다 작성했으면 :w로 저장후 :q로 종료해주세요!
#권한 부여
$ chmod +x git-sch.sh
6. 쉘 파일 실행
쉘파일 디렉토리 위치에서 실행 후 git repository에 접속해 push가 잘 되었는지 확인하기
# 작성한 쉘파일 실행 > 테스트
$ ./git-sch.sh
성공적으로 실행된것을 확인할 수 있다..!
다만 날짜가 다른데 시간을 설정해주겠습니다
7. 날짜 변경
크론탭으로 스케줄링을 걸기 전에 현재시간 알아보기
$ date
# Mon May 17 18:53:43 UTC 2021
우리나라 시간대로 바꿔주는데 없으므로 시간대가 똑같은 일본 시간으로 바꿔줍니다
$ cd /usr/share/zoneinfo/
$ ls
$ sudo ln -sf /usr/share/zoneinfo/Japan /etc/localtime
$ date
# Tue May 18 03:54:33 JST 2021
시간을 변경했으니 크론탭 서비스를 재시작 해줍니다!
8. 크론탭 스케줄링 테스트
저는 crontab -l 명령어를 쳤었는데 no crontab for root에러가 떠서,,
/etc/로 들어가 ls확인해보니 crontab이 있더랍니다.. 그래서 다시 /home/ubuntu/로 돌아와 아래 명령어를 실행해줬습니다
다행히 잘 작동 ㅠ
# 크론탭 등록 및 수정
$ crontab -e
크론탭 등록시 에디터를 선택하는 창이 나오는데
nano editor 1번을 선택하고 enter.
들어가면 주석으로 어떻게 사용하는지 상세하게 나와있는데
주석 맨 아래로 내려가 스케줄링 걸 작업을 적고 저장.
일단 크론탭이 잘 작동하는지 기본 테스트를 해봅니다
$ crontab -e
#추가
* * * * * echo "cron works" >> /home/ubuntu/test.txt
파일 저장후 나온다.
(ctrl+x, y, enter)
# 실행되는지 확인, 매 분마다 실행됨
cat /home/ubuntu/test.txt
크론탭에 매 분마다 실행될 수 있게 등록하여
시간이 지나면 cron works가 계속 찍히는것을 확인할 수 있습니다
크론탭이 정상적으로 작동하는걸 확인했으니 테스트용 크론탭을 지웁니다
$ crontab -r
9. 크론탭으로 github push 스케줄링 걸기
crontab -e
# 추가
# 분 시 일 월 요일 sh파일
40 4 * * * /home/ubuntu/git-sch/git-sch.sh
해당 시간에 크론탭이 sh파일을 실행하여 github로 push작업이 될것이고
매일매일 제목이 붙은 github diary가 생성될 것입니다!
무사히 취침 전 push된 것을 확인할 수 있었습니다 .·´¯`(>▂<)´¯`·.
여행 당일 날이어서 이만,,,
크론탭의 더 자세한 설명과 명령어 정리는 여행 후에 정리하도록 하겠습니다..!
너무 좋은 글 남겨주신 글쓴이 분에게 감사드립니다!