내가 한 노력들

[ Linux ] Cron 사용해서, 일정시간마다 스크립트 실행시키기! 본문

IT 공부/Linux

[ Linux ] Cron 사용해서, 일정시간마다 스크립트 실행시키기!

JONGI-N CHOI 2022. 1. 27. 12:00

cron을 이용하면, 원하는 스크립트를 일정 시간마다 실행시키고, 결과를 출력하거나 저장하거나 다양하게 활용할 수 있습니다. 

 

Cron 설치 

apt install cron

 

cron 목록 보기

crontab -l

아직 설정해둔 cron이 없어서, 위와같은 메세지가 출력됩니다.

 

cron 설정

crontab -e
* * * * * python3 cron.py >> cron.log 2>&1

cron은 앞서 설명했던 것 처럼, 정해진 시간마다 실행이되기 때문에, 시간을 정해줘야합니다. 

 

* * * * * 총 다섯가지 패턴이 존재하는데, 첫번째 위치부터 "분 시 일 월 요일"순 입니다. 

또한, 직접적으로 숫자를 입력하는 것, "*"을 이용해 모든 것을 포함한다거나 "/"을 이용해서 패턴을 준다던가 "-"로 범위를 설정하는등 다양하게 존재합니다. 

 

즉, * * * * *가 의미하는 것은 매분마다 실행시킨다는 의미입니다. 

 

python 코드 작성

from datetime import datetime

today = datetime.today()
print('cron test. DATE: {}'.format(today))

코드는 간단히 cron test. DATA: 현재 날짜 를 출력해주는 코드입니다. 

 

cron 실행

service cron restart

OK가 나오면 실행에 성공한 것이고,

 

ps -ef | grep cron

ps 명령어를 통해서, 실행중인 프로세스를 확인할 수 있습니다. 

 

 

log 확인

cat cron.log

디렉토리 목록을 확인해보면, cron.log라는 새로운 파일이 생성된 것을 볼 수 있습니다. 

cat 명령어로 출력을 해보면, python 코드의 내용이 성공적으로 추가된 것을 확인할 수 있습니다.

 

시간이 지난뒤에 다시한번, 출력해보니까 43분 44분 45분  매분 1초마다 값이 저장된 것을 확인할 수 있습니다. 

 


이렇듯, 특정 스크립트를 실행시켜서 log에 내용을 저장하는등 여러 방법으로 사용이 가능합니다.

또한, email보낼 목록을 모아놨다가 cron을 통해서 일괄 보내는등 

저는 일정 시간마다 특정 사이트의 내용을 긁어와서 저장하는 코드에 적용했습니다.