brunch

You can make anything
by writing

C.S.Lewis

by 마크 Jul 11. 2022

특정 시간에 반복적으로 프로그램 실행하는 방법

크론잡으로 정해진 시간에 웹페이지 실행하기

코딩의 매력은 반복에서 나온다. 코딩에서 if, for 이 두 가지만 배워도 상당히 많은 것들을 할 수 있었다. 프로그래밍의 근본에 가까운 것은 조건에 따라 어떤 일을 반복하는 것이 아닐까 싶다.


그런데 가끔 프로그램을 짜고 이 프로그램이 매일 반복해서 실행해야 한다면? 예를 들어 주식 정보를 수집하는데 크롤링하는 프로그램은 만들었으나 매일 오후 5시에 이 크롤링이 작동하게 하려면 어떻게 해야 할까? 내가 직접 프로그램을 실행해야 할까? 그것도 방법이지만 그래서는 진정한 자동화를 이루었다고 할 수 없다.


그래서 나 대신 내 웹사이트를 구동해줄 사람 없나 찾게 된다.


이 역시 해결 가능하다. 리눅스 서버를 사용한다면, crontab을 이용해 내가 필요한 시간에 프로그램을 돌릴 수 있다. 


crontab -e

crontab -l

0 */5 * * *


이런 명령어들을 통해 할 수 있는데 리눅스가 뭔지도 모르겠고 크론탭이 뭔지는 더더욱 모르겠다는 사람들을 위해 누군가 친절하게 크론탭을 쉽게 쓸 수 있게 서비스로 제공하는 사람이 있다. 그냥 그 서비스를 이용하면 된다. 그리고 무료다.


https://console.cron-job.org/


크론잡(cron-job)이라는 사이트이다. url을 입력하면 특정 시간에 이 url을 실행시켜준다. url을 실행시켜준다는 것이란, https://abc.mysite.com/daily.php 이런 url은 브라우저 주소창에 입력해야만 daily.php 라는 파일이 실행된다. 스스로는 실행되지 않는다. 크론잡은 프로그램적으로 이런 파일들을 브라우저 주소창에 입력한 것처럼 서버에 request를 요청해주는 역할을 한다.


만약 daily.php 라는 파일이 네이버 금융 페이지를 크롤링해서 전 주식 종목에 대한 데이터를 긁어와서 database에 저장하는 명령을 수행하는 프로그램이라고 해보자. 매일 오후 5시에 daily.php를 브라우저에 입력한 것과 같은 효과를 크론잡에서 할 수 있는 것이다.


크론잡 사이트에 접속해본다. 아래와 같은 화면이 나온다.

크론잡 로그인 페이지

계정이 없으면 계정을 만들고 로그인을 한다. 이메일 주소만 있으면 된다.


Dashboard

아래와 같은 dashboard가 나오는데 나는 이미 여러 개의 크론잡 작업을 하고 있어서 이렇게 보이고 처음이라면 아무것도 없을 것이다.


Dashboard 나 Cronjobs에서 CREATE CRONJOB을 클릭한다.(아래 이미지 참조)


다음에는 크론잡을 설정하는 페이지가 나온다.

크론잡 설정


위에서 보듯이 크게 3가지를 설정한다.


Title : 이 작업에 대한 내용을 쓴다. 자신이 알아볼 수 있는 내용으로 쓰면 된다.

URL : 실행할 파일 주소를 입력한다. 정해진 시간에 어떤 url을 실행해야 하는지를 적어준다.(하나만 쓸 수 있다)

Schedule : 실행할 시간 간격을 쓴다. 작게는 1분 간격부터 연단위로 설정이 가능하다. 요일별이나 날짜별로도 설정할 수 있다. 직접 살펴보기 바란다.


그다음 하단의 CREATE를 클릭해서 저장하면 끝난다.


Cronjobs 메뉴로 가면 내가 설정한 크론잡 내용이 나온다.


EDIT를 눌러 크론잡 내용을 수정할 수 있고 HISTORY를 클릭해서 앞으로 이 웹페이지가 언제 실행되는지를 확인해 볼 수 있다.

매일 오후 5시에 실행이 예약되어 있음을 볼 수 있다.


이 크론잡을 이용하면 손쉽게 리눅스의 크론탭을 쓰는 것 같은 효과를 볼 수 있다. 물론 실행되는 파일이 크거나 시간이 오래 걸린다면 실행에 실패할 수도 있다. 간단한 프로그램이라면 이 크론잡 사이트를 이용하는 것이 매우 유용할 것이다.


이 크론잡을 이용해 정해진 시간에 자동 포스팅 발행을 하거나 크롤링을 해서 DB에 자료를 저장하거나 메일이나 메신저를 쓸 수 있게 된다. 활용 용도는 무궁무진하다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari