티스토리 뷰
- Crontap 및 스케줄러 작성하기
- Cron 이란?
크론이란 특정한 시간에 또는 특정 시간 마다 어떤 작업을 수행하게 해주고 싶을때 사용하는 명령어가cron이다. cron은 특정한 시간에 특정한 작업을 수행하기 해주는 스케줄링 역할을 한다. 즉 대부분이
잠든 새벽시간에 작업을 해야하는데 그걸 cron을 사용하여 새벽시간에도 작업을 수행하게 하는 것이
다.
cron 시스템에는 시스템에서 기본적으로 사용하는 cron설정이 있으며 이것을 시스템크론이라 부른다.
또 루트나 일반 사용자가 자신의 cron을 직접 설정하여 사용하는 사용자 크론이 있다.
- Cron을 사용하는 이유?
위에서도 얘기했지만 시스템 사용이 가장 적은 새벽 3 ~ 4 시 에 백업을 해야 한다면 몸도 피곤하고 더군다나 회사에 출근하기도 싫을 것이다. 이렇게 주기적으로 반복되는 일을 자동으로 실행할 수 있게 예약을 해주는게 cron이다.
- Crontab 이란?
crontab은 cron이 원하는 시간에 원하는 명령을 수행하도록 명령리스트를 만드는 것이 Crontab 작업이라고 할 수 있다.
즉, 스케줄 시간과 실행할 프로그램을 설정 관리 해주는 것이다.
다시 말해 crontab은 스케줄 시간과 실행할 파일의 경로를 관리하고, cron은 crontab을 실행한다.
cron은 실행, crontab은 설정이라고 생각하면 쉬울 것이다.
step1. crontab 등록하기
-
리눅스는 apt-get install cron 을 입력하여 install 한다.
-
맥 os는 기본 내장이 되어있다.
먼저 실행 창에 crontab -e 를 입력하여 크론탭을 등록한다.
위와 같은 사진이 뜨는데 맨 아래에 명령어를 입력한다. 나는 nano 편집기를 선택 했다. 위 명령어를 입력한 후 CTRL + O 를 누르면 저장이 된다.
step.2 crontab 스케줄 설정하기
위 사진에서 명령어 앞에 * 이 5개가 있다. crontab의 사용 목적은 주기적으로 자동 실행을 위한 것이기 때문에 실제로 매 분마다 실행을 해주는 프로그램 보다는 일정 시간 혹은 날짜를 간격으로 실행을 한다.
그래서 앞의 5개의 * 이 있는 각각의 위치에 들어가는 값을 알고있어야 한다.
- 첫번째 * 자리에는 : 분
- 두번째 * 자리에는 : 시간
- 세번째 * 자리에는 : 일
- 네번째 * 자리에는 : 월
- 다섯째 * 자리에는 : 요일 ( 0 : 일요일 )
- ( * 만 입력하면 매분, 매시간, 매일을 뜻한다)
ex)
30 * * * * /home/jaeyoon89/jaeyoon_study/test_2.py --> 매시간 30분마다 test_2.py 실행
0 18 * * 0 /home/jaeyoon89/jaeyoon_study/test_2.py -->매주 일요일 18시에 test_2.py 실행
0 18 * * 0,4 /home/jaeyoon89/jaeyoon_study/test_2.py --> 매주 일요일,목요일 18시에 test_2.py 실행
주의할 점) 명령어 앞의 * 을 입력할 때는 꼭 띄어쓰기에 유의해야 한다. 띄어쓰기가 안되어 있으면 오류가 발생하니 참조하도록 하자.
step.3 crontab 빠져나오기
아래 그림 처럼 CTRL + X 를 입력하면 편집기를 빠져나오게 된다.
위 사진처럼 installing new crontab 이라고 뜨면 성공한 것이다.
step.4 확인하기
위 빨간 박스에 보이는 것처럼 crontab -l 을 입력하면 정상적으로 등록되어 있는지 list-up 해볼 수 있다.
* 개인 유저 crontab 경로
cron이 실행한 설정 파일인 crontab이 저장되어 있는 장소는 3곳이 있다. 이번 블로그에서는 개인 유저 crontab 경로만 알아보자.
/var/spool/cron/crontabs
crontab 사용 시 필요한 명령어
-
crontab -e : 명령을 등록 및 편집
-
crontab -l : 현재 등록된 리스트 출력
-
crontab - r : 현재 사용자가 등록한 crontab 전체 삭제
-
crontab -d : 등록된 명령을 삭제
-
crontab -u otheruser : otheruser 사용자가 등록한 crontab 리스트 출력
이번 시간엔 crontab에 대해 알아보았다. cron 기능이 없었다면 서버관리를 하는 회사는 새벽 5시에 나와 백업을 해야하고, 보안 회사에서는 보안의 취약점 검사를 하루 24시간 동안 앉아서 수행을 했어야 했을 것이다. 나도 이번 블로깅으로 cron의 유용함과 사용법을 알게 되었다. 나처럼 처음 cron을 접하는 사람들에게 도음이 되었으면 한다.
출처 : [nohos님 티스토리], [포뇨아빠님 티스토리]