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 또한 처음 사용할 때 경로설정에 애를 먹었다.
  • 이를 쉽게 해결해줄 방법은 ..모든 경로를 절대경로로 변경해주면 된다.