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
리눅스 특수문자 참조 블로그 : https://jdm.kr/blog/4
'코딩 지식' 카테고리의 다른 글
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 |