맥북 작업 스케줄러 (feat. Crontab사용방법, Cron과 Crontab 차이, 파이썬 파일 자동실행)
최근 자동화 프로그램을 짜면서 이전에는 써보지 못했던 것들을 알아가고 있다.
자동화 프로그램을 어느정도 다 만들어서
이제는 내가 원하는 시간대에 자동으로 프로그램이 실행되도록 스케줄링을 해야 했다.
근데 윈도우의 작업 스케줄러는 들어봤어도 맥에서의 작업 스케줄러는 들어본 적이 없어서 혹시 없나...? 했는데
역시나 찾아보니까 있더라.
바로 Cron이라는 것을 사용하면 되더라.
Cron이란, 간단하게 말하면 "Unix 계열 운영체제에서의 스케줄러"라고 보면 된다.
(마치 윈도우 운영체제에서는 작업 스케줄러가 있는 것처럼)
그래서 Unix에 뿌리를 둔 Linux, MacOS의 경우엔 이 Cron을 통해 스케줄링을 한다.
근데 찾아보니 우리가 사용하게 될 명령어는 Crontab이라는 것이다.
Crontab은 무엇일까?
Crontab은 심플하게 Cron의 명령 리스트라고 보면 된다.
즉, Cron이 언제 실행되는지, 파일의 실행경로 등을 설정한다.
아래 예시들을 통해, Crontab을 어떻게 사용하는지 확인해보자.
crontab -e # crontab의 내용을 생성 및 수정
이 명령어를 통해, crontab을 수정 및 생성할 수 있다.
위의 명령어를 치면 이제 vi편집기가 뜰 것이다.
vi편집기에서는,
"i"를 누르면 수정이 가능하고
"esc" + ":wq"를 누르면 저장 후 vi편집기를 빠져나간다.
이때 작성 규칙이 있는데
# 형식
[분] [시간] [일] [월] [요일] "실행할 명령어"
# [분]: 0 - 59
# [시간]: 0 - 23
# [일]: 1 - 31
# [월]: 1 - 12
# [요일]: 0 - 6 (0: Sunday, 1: Monday, ... , 6: Saturday)
ex1.
1 0 * * * /usr/local/bin/python3 /Users/i/Desktop/main.py
# 이것 같은 경우엔, 매일 0시 1분마다 main.py라는 파이썬 파일을 실행하겠다는 의미.
ex2.
0 0 15 * * /usr/local/bin/python3 /Users/i/Desktop/main.py
# 매달 15일 0시 0분에 main.py 파일을 실행하겠다는 의미.
ex3.
* * * * * /usr/local/bin/python3 /Users/i/Desktop/main.py
# 매 분마다 main.py라는 파일을 실행하겠다는 의미.
ex4.
20,40 * * * * /usr/local/bin/python3 /Users/i/Desktop/main.py
# 매 시간 20분, 40분마다 main.py를 실행. -> 1시 20분, 1시 40분, 2시 20분.... 이런 식으로
ex5,
*/20 * * * * /usr/local/bin/python3 /Users/i/Desktop/main.py
# 20분마다 main.py를 실행한다.
기본적인 규칙은 이렇다.
자신이 원하는 규칙에 따라 변형해서 사용하면 될 것 같다.
나의 경우엔, 자동화 봇이 자정이 지나서 한 번 쓱~ 돌고 오면 되기 때문에 "1 0 * * *"로 설정해주었다.
crontab -l # 설정된 crontab의 목록 확인
이 l 옵션을 통해, 내가 설정한 crontab의 목록을 확인할 수 있는데
다음과 같이 확인할 수 있다.
crontab -r
r 옵션을 줄 경우, 이 crontab 파일을 삭제할 수 있다.
(이 r 옵션을 주고 실행할 경우, 설정해놨던 작업 스케줄이 모두 날아간다.)
이 정도만 알아도 내가 원하는 것은 충분히 구현할 수 있는 것 같다.
-끝-
'개발자' 카테고리의 다른 글
gspread Quota exceeded 오류 (feat. 구글 시트, Google sheets API, gspread.exceptions.APIError, Python) (0) | 2021.08.31 |
---|---|
Crontab 로그(log) 남기는 방법 (feat. 출력 리다이렉션, 2>&1의 의미) (8) | 2021.08.11 |
[C/C++언어] static 변수를 쓰는 이유 (feat. 메모리 구조) (3) | 2021.05.18 |
Git push, clone, pull 명령어 (2) | 2021.01.15 |
Git add, commit 명령어(feat. Git과 GitHub 차이) (7) | 2021.01.10 |