목차
CRON이란
Unix계열 컴퓨터 운영체제의 시간 기반 스케쥴러이다.
특정 프로그램을 시간, 날짜 간격에 주기적으로 실행할 수 있도록 스케쥴링 하기 위해 cron을 사용한다
30분에 한번씩 외부 데이터를 가져와서 DB에 넣는 프로그램을 수행한다거나 파일 백업을 수행할 때 유용하게 사용될 수 있다.
CRON 스케쥴링 명령어
CRON 어플리케이션 설정 명령어
- crontab -e : 실행할 크론 명령 수정
- crontab -l : 실행할 크론 명령 확인
- crontab -r : 크론 명령 제거
수행할 작업 설정 명령어
- * * * * * hello.sh --> 1분마다 hello.sh를 실행
- 0 4 * * * hello.sh --> 매일 04시에 hello.sh를 실행
- 0 4 * * 1-5 hello.sh --> 월요일부터 금요일 04시에 hello.sh를 실행
- */10 4 * * * hello.sh --> 매일 04시 10분, 04시 20분, 04시 30분,04시 40분,04시 50분에 hello.sh를 실행
- 0 */6 * * * hello.sh --> 6시간 마다 hello.sh를 실행
- 0 8 * * 0,6 hello.sh --> 토요일, 일요일 08시에 hello.sh를 실행
Ubuntu 환경에서 CRON작업 수행하기
여기서 사용하는 Ubuntu는 WindowPro Hyper-v를 통해 생성한 Ubuntu 가상환경입니다.
CRON으로 실행할 파일 생성 및 테스트
위처럼 hello.sh 파일을 실행한 결과를 hello.log파일에 출력하는 작업을 cron을 통해 반복적으로 수행하고자 한다.
CRON 설정
crontab -e 명령어로 cron설정파일에 들어가서 1번을 누른다.
위와 같이 수행할 작업을 적고 ctrl + o로 저장 후 나간 후, 크론의 설정을 바꿨으니 sudo systemctl restart cron으로 크론을 재시작한다.
crontab -l로 우리가 설정한 크론 파일이 잘 들어갔나 확인할 수 있다.
tail -f로 log파일 관찰하기
이렇게 1분에 한번씩 로그들이 출력되는 것을 관찰할 수 있다.
CRON으로 수행시키는 작업 삭제하기
crontab -r옵션으로 cron의 작업들을 싹 다 제거할 수 있다.
Crontab과 로그아웃
ubuntu환경에서는 계정을 로그아웃하면 crontab으로 설정해둔 것들이 삭제된다.
/etc/crontab에 저장하면 로그아웃을 해도 삭제되지 않는다.
이 파일에 저장할 cron 명령을 작성하면 된다.
MAC 환경에서 수행해보기
CRON에 파일 접근 권한 부여하기
cron 어플리케이션에 파일 접근권한을 부여하지 않을 경우 Operation not permitted라는 에러 메세지가 출력된다.
맥북의 환경설정 -> 개인정보 보호 및 보안 -> 전체 디스크 접근 권한 -> '+'버튼을 클릭 -> 열기창이 뜨면 'cmd + shift + G'를 누른다 -> 경로에 'usr/sbin/cron'으로 들어가서 cron 어플리케이션을 선택해서 권한을 부여해준다.
CRON설정
맥북에 CRON이 하나도 설정되어있지 않을 경우
맥북에 cron명령이 하나도 설정되어 있지 않을 경우 home directory로 가서 crontab -e를 설정해야한다.
그렇지 않으면 작성된 cron파일이 없어 아래와 같은 에러메세지가 발생한다.
Home directory로 가서 cron 설정
CRON 동작 확인
tail -f로 log파일 관찰하기