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


업무 자동화를 위해서 필요한 기술들은 여러 가지가 있지만, 기본적으로 작성한 코드가 자동으로 실행돼야 합니다. 작성한 코드를 자동으로 실행하기 위해서는 OS(운영체제)의 도움을 받아야 합니다. 윈도의 경우에는 작업 스케쥴러를, 맥의 경우에는 크론탭(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 권한이 필요한 명령은 실행할 수가 없습니다. 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 설정 및 사용법, 파이썬 코드를 자동으로 실행하는 방법에 대해서 알아보았습니다. 시간과 날짜를 지정하는 방식에만 익숙해지면 어렵지 않게 사용이 가능합니다. 이제 정기로 자동 실행해야 하는 코드나 데이터를 수집하는 코드를 입력하여 배치 작업을 해 볼 수 있게 됐습니다.

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