파이썬을 이용하면 다양한 작업들을 자동화할 수 있다. 파이썬은 쉽게 빠르게 배울 수 있고, 이미 개발된 라이브러리로 어려운 기술도 사용이 가능하다. 업무 자동화를 위해서는 최고의 언어가 아닌가 싶다.

 

업무 자동화를 위해서 필요한 기술들은 여러가지가 있지만, 기본적으로 작성한 코드가 자동으로 실행되어야 한다. 작성한 코드를 자동으로 실행하기 위해서는 OS(운영체제)의 도움을 좀 받아야 한다. 윈도우의 경우에는 작업 스케쥴러를 이용하면 되고, 맥의 경우에는 크론탭(crontab)을 이용하면 된다. 오늘은 crontab 설정 및 사용법, 파이선 코드를 자동으로 실행하는 방법에 대해서 알아보도록 하겠다.

 

 

crontab 설정 및 사용법

 

 

윈도우에는 작업 스케쥴러(Task Scheduler)로 특정 프로그램을 원하는 시기에 자동실행할 수 있다. 하지만 필자는 맥(mac)을 사용하므로 작업 스케쥴러가 아닌 다른 방법을 사용해야 한다. mac에서 자동실행하는 방법은 리눅스와 동일하다. crontab이라는 내장된 프로그램을 이용하면 된다.

 

파이썬 코드를 배치파일로 만들었고, 캘린더를 이용해 특정 시간에 실행되도록 구성하였다. 하지만 파일 실행시 에러가 발생한다. 보안상의 권한 문제인 듯 하다. 찾아보면 해결책이 있겠지만, crontab을 이용하는 것이 더 쉽고 편리하다는 것을 알게 됐다.

 

파이썬 배치파일 실행 오류

 

 

crontab을 이용한 정기 실행 자동화

cron은 유닉스 계열 운영체제의 시간 기반 task scheduler이다. 쉽게 윈도우에는 task scheduler, 리눅스와 맥에는 cron이라고 보면 되겠다.

cron은 맥을 포함해 UNIX 계열 OS에 기본 설치돼 있다고 한다. cron을 설정하기 위해 터미널창에서 crontab이라는 명령어를 실행해야 한다. 아래와 같은 순서로 작업하면 된다.

1. 터미널창에서 'crontab -e'라고 입력하여, 편집창을 연다.

2. 매일 아침 6시 이전에 "test.py"를 실행한다면 아래와 같이 입력한다. 경로는 자신의 환경에 맞게 설정해 준다.
    0 6 * * *  /anaconda3/python  /Users/open/PycharmProjects/new_load_data.py

 

 

crontab을 편집하는 방법은?!

crontab을 서정하는 방법은 크게 2가지가 있다. 하나는 'sudo crontab -e'로 실행해서 root권한에 설정하는 것이다. 다른 하나는 'crontab -e'로 사용자의 계정에 설정하는 것이다. 사용자의 계정에 설정하면 root권한이 필요한 명령은 실행할 수가 없다. root권한이 필요한 파일은 sudo명령어를 이용해서 root계정에 설정해야 한다.

crontab -e를 실행하면 터미널에서 편집을 해야 한다. 터미널에서 편집하기가 조금 어색한데, 's'를 누르면 편집할 수 있다. 편집이 끝나면 'Esc'키를 누르고, :을 입력하고 w키를 입력 후 엔터를 누르면 저장이 된다. 종료할 때는 :를 입력하고 q를 누른다.

처음에는 '0 6 * * *' 부분을 붙여서 입력했더니 아래와 같은 에러가 발생했다.

crontab: no crontab for open - using an empty one
crontab: installing new crontab
"/tmp/crontab.Z79xNcUBnY":0: bad hour
crontab: errors in crontab file, can't install
Do you want to retry the same edit?

 

'crontab -e' 명령어를 실행한 후에 crontab이 설치가 되는데 시간이 잘못 입력돼 설치되지 않는다. 이후에 '06***'이라고 한 부분을 '0 6 * * *'으로 띄웠더니 설치가 됐다.

 

cron 시간 설정

'crontab -e'를 실행하고 앞에 시간을 설정하면 아래와 같이 인식된다.

* (분) (시) (일) (월) (요일)
* 분: 0~59, 시: 0~23, 일: 1~31, 월: 1~12, 요일: 0~7(0과 7은 일요일) 의 형태이다.
* 하나의 숫자 외에도 아래와 같이 복수를 지정할 수도 있다.
  - 0,30,50: 0,30,50에 각각 실행한다.
  - 1~3: 1,2,3을 의미한다.
  - */10: 10의 간격으로 지정한다.
  - * : 전체 선택

 

 

맥북을 자동으로 시작하기

crontab을 이용해도 PC가 켜져있어야 해당 시간에 실행된다. PC를 켜는 것은 전원옵션에서 설정할 수 있지만, 하루에 1번 밖에 할 수가 없다. 여러 번 PC를 켜고 싶다면, crontab에 PC가 자동으로 켜지는 시간을 계속 변경해줘야 한다. 예를 들어 맥북을 10시에 켜지도록 설정을 한다. 그리고, 해당 시간에 pmset명령을 이용해서 다음에 원하는 시간에 켜지도록 설정한다. 13시에 켜지게 하고 싶다면 아래와 같이 입력하면 된다.

sudo pmset repeat wakeorpoweron MTWRFSU 13:00:00

 

 

셀레니움 등을 자동으로 시작하기

crontab을 이용해서 실행하면, 실행하는 과정이 화면에 보이지 않는다. 이는 환경변수가 다르기 때문이다. 화면에서 보고 싶다면, export DISPLAY=:0로 환경변수를 설정해야 한다. crontab은 1번에 한 줄만 쓸 수 있다. 하지만, '&&'을 입력하고 다음 명령어를 입력하면 여러 명령어를 순차적으로 실행할 수 있다.

그래도 잘 동작하지 않는다면, 아래와 같이 별도로 터미널을 실행하게 해서 하면 잘 된다.

osascript -e 'tell app "Terminal" to do script "python <파이썬 파일>" activate'

 

 

오늘은 crontab 설정 및 사용법, 파이썬 코드를 자동으로 실행하는 방법에 대해서 알아보았다. 시간과 날짜를 지정하는 방식에만 익숙해지면 어렵지 않게 사용이 가능하다. 이제 정기로 자동 실행해야 하는 코드나 데이터를 수집하는 코드를 입력하여 배치 작업을 해 볼 수 있게 됐다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기

댓글을 달아 주세요

">