파이썬으로 크롤링을 돌려서 주기적으로 특정 작업을 하는 프로그램을 만들었습니다. 이 프로그램은 주기적으로 매일 돌려야해서 자동으로 우분투에서 실행되게하고 저는 가끔 로그만 보고 싶습니다. 어떻게 해야할까요?
바로 linux에는 crontab이라는 명령이 있어서 주기적인 작업을 자동화 할 수 있습니다.
Table Of Contents
오늘은 ubuntu 계정에서 주기적으로 수행해야하는 "nohup python3 ..." 명령을 crontab으로 매일 밤에 동작하도록 자동화 해보려고 합니다.
주기적인 작업을 위한 crontab
매일 새벽 2시에 nohup python3 web-tools/ss-crawling/apiSellout.py & 명령을 자동으로 실행하려면, cron을 설정해야 합니다. 다음 단계를 따라 설정할 수 있습니다:
크론탭 열기: crontab -e 명령을 사용하여 크론탭 편집기를 엽니다.
크론탭을 처음 사용하면 아래와 같이 editor를 선택하는 화면이 나타납니다. 저는 vim.basic을 사용해 보겠습니다.
lswhh@DESKTOP-HQPQNKV:~$ crontab -e
no crontab for lswhh - using an empty one
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed
Choose 1-4 [1]:
예시로 다음과 같이 작성되어있습니다.
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
크론탭에 명령 추가: 다음 줄을 추가하여 매일 새벽 2시에 nohup 명령을 실행하도록 설정합니다.
0 2 * * * cd /home/lswhh && nohup python3 web-tools/ss-crawling/apiSellout.py &
명령 해석하기
0 2 * * *: 매일 2시 0분에 실행.
- 이 부분은 작업이 언제 실행될지를 지정합니다.
- 첫 번째 숫자 0: 매 시간의 0분에 실행.
- 두 번째 숫자 2: 오전 2시에 실행.
- 세 번째 *: 매일 실행.
- 네 번째 *: 매월 실행.
- 다섯 번째 *: 매주 실행 (요일에 관계없이).
cd /home/lswhh: 스크립트가 있는 디렉토리로 이동.
- 이 명령은 작업이 실행될 디렉토리를 변경하는 것입니다.
- /home/lswhh 디렉토리로 이동합니다.
&&:
- 이 기호는 두 개의 명령을 연결하는 데 사용됩니다.
- 앞의 명령(cd /home/lswhh)이 성공적으로 실행되었을 경우에만 뒤의 명령을 실행합니다.
nohup python3 web-tools/ss-crawling/apiSellout.py &:
- 백그라운드에서 스크립트 실행.
저장 및 종료:
- 변경 사항을 저장하고 크론탭 편집기를 종료합니다.
이 설정 후에는 매일 새벽 2시에 스크립트가 자동으로 실행됩니다.
리눅스 장비 시간이 UTC로 맞춰져 있는 경우
만약 현재 리눅스 장비 시간이 UTC로 설정되어 있는 경우, 한국 시간(KST, UTC+9)으로 새벽 2시에 스크립트를 실행하려면 UTC 기준으로 오후 5시(17:00)에 해당합니다.
따라서, crontab 설정은 다음과 같이 수정해야 합니다:
크론탭 열기:
crontab -e
UTC 기준으로 오후 5시 설정:
0 17 * * * cd /home/lswhh && nohup python3 web-tools/ss-crawling/apiSellout.py &
이렇게 하면 매일 한국 시간으로 새벽 2시에 스크립트가 실행됩니다.
QnA
크론탭을 설정해 놓았는데, 만약 작업이 실행되지 않는 것 같다면 다음과 같이 cron 서비스가 실행 중인지 확인이 가능합니다.
예를들어, WSL 같은 경우 systemd가 동작하지 않아 아래와 같이 service로 cron을 시작시켜주어야 합니다.
sudo service cron status
sudo service cron start
이렇게 하면 cron 서비스가 정상 동작할 것 입니다.
오늘은 우분투와 같은 리눅스에서 crontab을 이용해서 주기적인 작업을 수행하도록 설정하는 법을 알아보았습니다.
매일 귀찮게 실행하지 마시고 crontab을 이용해서 자동화 해 놓으시면 편리할 거에요!!
'IT' 카테고리의 다른 글
쿠팡 API를 이용하여 상품 업로드 시 인증 에러 원인과 처리 방법 (6) | 2024.10.31 |
---|---|
네이버 스마트스토어 상품 가져와서 쿠팡에 자동으로 올리는 프로그램 만들기 (5) | 2024.10.28 |
우분투에서 크롬 드라이버와 Selenium으로 headless(헤드리스) 웹 크롤링 문제 해결하기 (1) | 2024.09.23 |
파이썬으로 웹 페이지 크롤링 - 홈페이지 로그인 하기 (1) | 2024.09.23 |
리눅스(우분투 20.04)에서 커맨드라인으로 구글 크롬(google-chrome) 설치하기 (1) | 2024.09.23 |