linux 작업 스케줄러 Crontab
crontab
- 리눅스의 작업 스케줄러이다.
- windows 의 작업 스케줄러와 비슷하다.
- 운영체제 특성상 cli로 진행해야하지만 단순하다.
crontab 설정
crontab -e
cron 표현식
- 날짜, 시간 표현에는
cron 표현식
이 사용된다. - 앞부분의 * 부분이 날짜와 시간을 지정하는 곳이다.
- 순서대로 분, 시, 일, 월, 요일
- cron 생성 페이지를 사용하면 편리하게 이용할 수 있다.
* * * * * 실행 명령어
---------------------------------
ex) 매일 01시에 test.py 파일 실행
0 1 * * * python test.py
shell script 파일
- 직접 명령어로 하나하나 입력해도 되지만 sh 파일을 이용할 수 있다.
- 윈도우의
bat
파일처럼 IF문 같은 조건식을 사용할 수 있기 때문에 스케줄 작업에 조건을 줄 수 있다.
log 남기기
- 실행 로그를 남길 수 있다.
- 로그 누적, 매번 새로운 로그 선택가능
# 매번 새로운 log로 변경
0 1 * * * python test.py > /log/test.log 2>&1
# log 누적
0 1 * * * python test.py >> /log/test.log 2>&1
crontab 리스트
crontab -l
crontab 전체 삭제
crontab -r
crontab 실행, 중지, 재실행
- crontab 설정을 해줬으면 반드시 실행이나 재실행을 해줘야한다.
- ubuntu에서는
cron
으로 해야한다.
# 실행
service crond start
# 중지
service crond stop
# 재실행
service crond restart
crontab 상태 보기
service crond status
장점
- 날짜, 시간 지정과 명령어만 입력하면 돼서 단순하다.
- log 수집이 편하다.
단점
- 실패한다면 재시작해주는 기능이 없다.
- log 수집은 편하지만 과거의 log를 확인하는게 어렵다.
주의할 점
- 모든 프로젝트를 할때 느끼는 거지만 경로 설정이 중요하다.
- crontab 또한 처음 사용할 때 경로설정에 애를 먹었다.
- 이를 쉽게 해결해줄 방법은 ..모든 경로를 절대경로로 변경해주면 된다.