우분투 OS 기반 서버에서 주기적으로 작업을 실행하는 경우에
스케줄러를 사용한다. 작업량이 많으면 AWS lambda 를 사용하거나,
jenkins 등의 서버리스 함수를 사용하겠지만, 작업의 크기가 작은
경우 굳이 이런 서버리스 프로그램을 사용할 필요가 없다.
이런 경우 가장 많이 사용하는 방법이 바로 "CRONTAB"을
서버에 추가하는 것이다. 간단한 스케줄러만 추가해도 기본적인
작업이 가능하다.
1. crontab 명령어 사용방법
$ crontab -e
새로운 crontab 추가
$ crontab -r
기존 crontab 작업 삭제
$ crontab -l
기존 crontab 작업 목록 확인
$ crontab -i
crontab 삭제 전 확인
2. crontab 생성
$ crontab -e 명령어로 crontab을 실행한다.
처음 실행하는 경우 다양한 종류의 에디터를 선택하라는
화면이 뜬다. 나는 vim을 선택했다.
crontab의 핵심은 * * * * * 셋팅이다.
예시를 들어보자
* * * * * /root/backup.sh
모든 항목을 " * "를 입력하면 1분마다 작업을 수행하라는
의미가 된다.
0 5 * * * /root/backup.sh
두번째 항목은 시간이다. 5시 00분에 작업을 수행하라는
의미가 된다.
0 4 * * 1-3 /root/backup.sh
맨 마지막 항목은 days of week 즉 요일을 의미한다.
변수는 0~6이 있으며, 일요일은 0 부터 시작한다.
즉 위 명령어는 월요일(1)에서 수요일(3)까지 4시 00분에
작업을 수행하라는 의미가 된다.
*/10 * * * * /root/backup.sh
항목에 / 를 붙이게 되면 간격을 의미한다. 초를 10으로
나눈 값을 항목으로 넣게 된다. 즉 매 10분 마다 작업을
수행하라는 의미가 된다.
0 9 * * 0,6 /root/weekend.sh
요일에 - 기호 뿐만 아니라 " , "도 사용가능하다. 위 예제는
토요일과 일요일 2일 9시에 작업을 수행하라는 의미가 된다.
3. crontab 작업관리
crontab 작업 시작, 중지, 재시작, 상태확인을 할 수 있다.
$ service cron status
- crontab의 작업 상태를 확인할 수 있다. 현재 작동하고 있는지
- 메모리는 얼마나 소모하고 있고, 작업의 갯수는 몇개인지 등등
$ service cron start
- crontab 작업 시작
$ service cron stop
- crontab 작업 중지
4. crontab 로그 확인
crontab은 백그라운드로 작동하는 프로세스다. 따라서,
crontab을 돌리다가 오류가 발생하는 경우 디버깅을 해야 한다.
작업 소스에서 로그 파일을 직접 만드는 경우도 가능하지만,
리눅스에서는 crontab 로그를 확인할 수 있다.
$ vim /var/log/syslog | grep CRON
'Programming' 카테고리의 다른 글
Nginx uwsgi_pass timeout 현상 해결하기 (0) | 2022.01.19 |
---|---|
우분투 터미널 환경에서 디스크 용량 확인하는 방법 (0) | 2022.01.18 |
웹 애플리케이션에 SSL 무료발급 하는 방법 및 Nginx 서버에 적용하는 방법 Nginx , AWS 서버 구성 (0) | 2022.01.18 |
python 코드 20줄로 AWS S3 버킷에 이미지 업로드 하기 (0) | 2022.01.18 |
AWS에 크롬드라이버 설치 selenium 돌리기 (0) | 2022.01.18 |
웹 애플리케이션 서버 생성 및 배포하기 Nginx uWSGI unix socket django python AWS ubuntu server (0) | 2022.01.17 |
댓글