우분투에서 corntab 이라는 스케줄링 기능이 있다.
(window 서버에서는 유사하게 작업스케줄링 기능이 있다.)
cron 파일을 기준으로 시스템이 스케줄링을 한다.
쉽게 말해 예를들어 5분 주기로 이 명령어를 실행하라고 cron 파일을 작성해주면 스케줄링이 된다.
(시간에 맞춰 자동으로 커널에 명령어를 입력한 것처럼 작동한다.)
아래의 명령어를 실행하여 cron 파일을 한번 보자.
sudo crontab -l
위의 이미지와 같이 cron 파일이 보일 것이다.
아래의 명령어를 실행하면 cron 파일을 수정할 수 있다.
sudo crontab -e
아래의 명령어를 실행하면 cron 작업이 삭제 된다.
sudo crontab -r
crontab 주기별 설정법.
문법
* * * * *
분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)(월~일)
ex)
1. 주기적으로 실행
# 1분 마다 test.sh 스크립트 실행
* * * * * /home/test.sh
2. 특정시간 실행
# 월요일 15:30분마다 test.sh 스크립트 실행
30 15 * * 1 /home/test.sh
3. 분단위 실행
# 매일 매시간 0분,15분,30분,45분 마다 test.sh 스크립트 실행
0,15,30,45 * * * * /home/test.sh
4. 시간 범위 실행
# 매일 15시 0분부터 15분까지 매분 tesh.sh 를 실행
0-15 15 * * * /home/test.sh
5. 간격 실행
# 매 5분마다 test.sh 를 실행
*/5 * * * * /home/test.sh
- 6. 복잡한 예제
# 매달 5일에서 10일까지 15시,16시,17시에 매 10분마다 test.sh 를 실행
*/5 15,16,17 5-10 * * /home/test.sh
crontab 로그 남기기, 확인.
크론탭(crontab)을 처음 사용하거나, 사용중 내부 프로세스 상 문제가 생겨 crontab 스케줄링이 원활히 되지않을 때, 로그를 확인하는게 중요하다. (로그 확인을 못하면 깜깜한 곳에서 허우적거리는 느낌이겠지)
crontab 명령어 뒤에 >> /home/경로/로그파일.log 2>&1 를 추가한다.
Ex.
# 원래 명령어
*/3 * * * * pip3 /home/tw_soul/DODO/dodoCrawler.py
# 로그 추가 명령어.
# /home/tw_soul/DODO 의 경로에 crontab_log 라는 이름의 파일에 로그를 남긴다.
*/3 * * * * pip3 /home/tw_soul/DODO/dodoCrawler.py >> /home/tw_soul/DODO/crontab_log 2>&1
크론탭이 주기적으로 돌아간다면, 로그 자꾸 쌓여 용량을 차지함으로, 주기적으로 로그파일을 삭제해주는 로직이 필요해 보인다.
crontab 로그 설정 및 로그 보기.
아래의 명령어로 예제에서 남긴 로그 파일을 확인해보자.
nano /home/tw_soul/DODO/crontab_log
로그가 남고 있다. 명령어 작성이 잘못 되어있는 것 같다.
이상으로 crontab 개념, 사용법, 로그 남기기 설명을 마친다.
references:
'OS > ubuntu' 카테고리의 다른 글
지킬[jekyll] serve 백그라운드 실행 (1) | 2020.09.11 |
---|---|
우분투 하드웨어(cpu, 램) 사용량 확인 하기 (0) | 2020.08.09 |
우분투 cpu/디스크 온도, 습도 확인하기 (0) | 2020.08.07 |
[ubuntu] apt-get 오류 / ubuntu 18.04 LTS (0) | 2020.03.03 |
.sh 스크립트 실행시, Permission denied (1) | 2019.08.05 |
댓글