OS/ubuntu

우분투 18.04 LTS / 주기적으로 커널 명령하기 / 자동 명령,스케줄링 /crontab 사용법

삐뚤어진 개발자 2019. 12. 27.

우분투에서 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:

https://jdm.kr/blog/2

 

댓글