CPU가 자꾸 죽는 문제가 이번주에 자주 생겨서, 지난 주에 고민했던 방법 중 하나인 “재부팅 시 파이썬 자동 실행”에 대해 적어보고자 합니다. 이 방식은 Linux Ubuntu 20.04 OS 환경에서 가능하며, 맥이나 윈도우에서 가능한지는 모르겠네요… 리눅스 서버에서 파이썬 파일을 돌릴 때 사용합니다.

 

crontab -e

 

터미널에 이 코드를 입력하면 아래와 같은 페이지가 나옵니다. 크론탭 문서로, 해당 파일은 nano를 이용해 작성되었습니다.

사실 crontab은 재부팅이 아니라 일정 시간동안 특정 파일의 실행을 반복하는 데 사용하는 프로그램인데요(ex. 1시간마다 특정 프로그램 실행 등) @reboot 라는 명령어를 통해 재부팅 될 때 특정 프로그램을 실행시킬 수 있다고 하여 해당 기능을 사용하게 되었습니다.

 

저 마지막 주석 밑에 실행하려는 코드를 적어주면 됩니다.

실제로 crontab은 반복작업에 용이한 애플리케이션으로, 아래와 같은 별 다섯개 뒤에 실행하려는 명령어를 적어주면 됩니다. 별 다섯개는 실행 주기로, 각각 의미하는 바는 아래와 같습니다.

만약 내가 매일 오전 5시마다 특정 파이썬 파일을 실행하고 싶다면 아래와 같이 입력합니다.

 

* 05 * * * /home/FILE_NAME.py

 

crontab은 "특정 시간" 외에도 "특정 시간 간격"마다 실행하는 기능도 포함하고 있는데요, 별 뒤에 슬래시(/)를 붙이고 반복하려는 시간을 입력하면 됩니다. 만약 1시간마다 파이썬 파일을 실행하고 싶다면 아래와 같이 입력합니다.

 

* */1 * * * /home/FILE_NAME.py

 

그 외의 활용법은 아래와 같습니다.

 

0,20,40 * * * * /home/FILE_NAME.py	// 매일 매시간 0분, 20분, 40분에 파일 실행
0-30 3 * * * /home/FILE_NAME.py	// 매일 3시 0분부터 30분까지 매분 파일 실행
*/10 2,3,4 5-6 * * /home/FILE_NAME.py	// 5일부터 6일까지 2시, 3시, 4시에 매 10분마다 파일 실행

 

예시로는 파이썬 파일의 실행을 썼지만 쉘 스크립트를 실행하는 등 다양한 작업이 가능합니다. 추가로 크론탭의 실행에 관해 로그를 남기고 싶다면 아래처럼 쓰면 됩니다.

 

* * * * * /home/FILE_NAME.py > /home/FILE_NAME.py.log 2>&1

 

위처럼 작성하면 매분마다 FILE_NAME.py.log 파일이 갱신되어 작업 내용을 확인할 수 있습니다. 여기서 >는 표준 출력(1)을 파일에 기록한다는 의미입니다. 2는 에러 출력이므로 위 경우 파일을 실행하면서 나온 표준 에러를 기록하는 것입니다.

 

 

크론탭 참조 블로그 : https://jdm.kr/blog/2

 

리눅스 크론탭(Linux Crontab) 사용법 :: JDM's Blog

* 이 포스팅은 네이버 블로그에서 작성(2013.04.01)한 내용을 옮겨온 것입니다. 오늘은 리눅스 크론탭에 대해 알아볼까 합니다. 음, 윈도우에서는 스케줄러와 비슷하다고 보면 되겠네요. "특정 시간

jdm.kr

리눅스 특수문자 참조 블로그 : https://jdm.kr/blog/4

 

리눅스 특수 문자 정리(Linux Shell) :: JDM's Blog

* 이 포스팅은 네이버 블로그에서 작성(2013.02.19)한 내용을 옮겨온 것입니다. 음, 다른 내용이 아니고 리눅스로 개발할 때 초기 시절 각종 명령어와 쉘스크립트 속에서 허우적거렸던 적이 있었다.

jdm.kr

 

'코딩 지식' 카테고리의 다른 글

Discord Bot을 Python으로 제작하기  (0) 2023.06.22
AWS EC2 서버 구축하기  (0) 2023.03.31
github 홈페이지 만들기  (0) 2022.08.19
gspread 유용한 기능들  (0) 2022.08.19
ipynb 파일 py로 Linux에서 변경하기  (0) 2022.08.19