파이썬 crontab으로 스케쥴링 하기

파이썬을 서버에서 crontab을 통해서 스케쥴링하여 실행하는 방법을 알아보겠습니다.

파이썬 스케쥴링

Crontab 사용법

crontab은 리눅스에서  원하는 작업을 원하는 시간에 스케쥴링 해주는 툴입니다.

일반적으로 shell script 인 .sh확장자 파일을 주로 등록하여 사용합니다.

아래처럼 mtime, ctime을 활용해서 sh파일을 만들곤 합니다.

생성(create) 3일 이상된 파일 삭제

find ./ -ctime +2 -exec rm {} \ ;

find /home -name '*.log' -ctime +2 -exec rm {} \;

삭제 명령 수정한지(modify)- 1일 지난 파일 삭제 예 

find [디렉토리] -mtime +0 -exec rm -f {} \;

다시 돌아와 crontab의 주요 명령어는 아래와 같습니다.

crontab -e  : 크론탭 추가(edit)
crontab -l : 크론탭 리스트 확인(list)
crontab -r : 크론탭 삭제(remove)

그리고 crontab에 등록할때에는 아래와 같은 규칙에 따라서 작성하시면 되는데요.

 

분 시간 날짜 달 요일 명령어 순으로 작성해주시면 됩니다.

(예제)
15 05 * * *   do_daily.sh       ; 매일 5시 15분에 do_daily 스크립트 실행                    
00 02 * * 7   do_weekly.sh    ; 매주 일요일 2시00 에 do_monthly 스크립트 실행
00 03 1 * *   do_monthly.sh  : 매월 1일 3시 00분에 do_monthly 스크립트 실행

크론탭의 ubuntu 공식 가이드는 링크

 

CronHowto - Community Help Wiki

Introduction Cron is a system daemon used to execute desired tasks (in the background) at designated times. A crontab file is a simple text file containing a list of commands meant to be run at specified times. It is edited using the crontab command. The c

help.ubuntu.com

Crontab에서 파이썬 등록하는 방법

먼저 간단한 테스트 파일을 만들어보겠습니다.

nano로 test.py라는 파일을 생성한 다음 현재 시간을 출력하는 파이썬을 만들겠습니다.

nano test.py

import datetime
nowT = datetime.datetime.now()
print(nowT)

이후 해당 파일을 crontab에 등록해야 스케쥴링이 정상적으로 동작합니다.

crontab -e를 통해서 크론탭을 실행하고

1분마다 test.py를 실행해서 test.log에 넣는 방법을 하겠습니다.

*/1 * * * * /usr/bin/python3 /home/ubuntu/python/test.py >> /home/ubuntu/python/test.log

파이썬을 crontab에 등록할때에는 이렇게 파이썬 주소, 그리고 파이썬 파일 주소로 작성하셔셔 실행하시면 됩니다.

> 하나는 덮어쓰기가 되고,

>>표시는 append로 뒤에 붙여넣게 됩니다.

crontab 명령어

확인은 아래 명령어를 통해서 확인하실수 있습니다.

grep CRON /var/log/syslog

확인하시면

실제 파일을 열어서 cat 등으로 정삭적으로 작동되는지도 확인해 볼 수 있습니다.

NO MTA installed, discarding output 에러

ubuntu에서는 크론탭 실행 결과를 mail로 알려주는데요. 해당 메일 서버가 설치되지 않아서 

crontab자체가 멈췄습니다.

구글링을 해보니 postfix를 설치해야 한다고 합니다.

sudo apt-get install postfix

위 명령어를 치고 좀 기다리면 설치가 완료됩니다.

중간에 추가용량이 사용된다는 메시지에 y를 눌러서 계속 진행합니다.

아래 postfix를 설치해주면 정상적으로 실행됨을 알 수 있습니다.

그럼 잘 사용하시기 바랍니다

728x90

해당 블로그에서 발행되는 콘텐츠 중 일부 글에는 제휴 및 홍보 관련 링크가 포함될 수 있으며, 파트너스 활동의 일환으로 일정액의 수수료를 받을 수 있습니다.