Crontab?

Cron 은 리눅스 에서 특정한 명령이나 스크립트를 지정한 날짜/시간에 자동으로 실행해 주는 스케쥴러 입니다.

주기적으로 시스템 백업 스크립트를 실행하는 등 시스템 관리자에 의해 많이 사용되며, 이외 반복적인 작업을 하기위해 사용될 수 있습니다.


Crontab 활용 용도

  • 30분 단위로 이메일을 전송 할 때
  • 매주 일요일 새벽 4시에 서버를 재 시작 할 때

위와 같이 반복적인 예약 작업이 필요할 때 다양하게 활용할 수 있는 도구 입니다.


Install crontab - CentOS

yum 을 통해 Crontab 을 설치합니다.

1
$ yum -y install cronie

Crontab 설치가 완료 되었다면, Crontab 서비스가 잘 작동 하고 있는지 확인합니다.

1
2
3
4
5
6
7
$ systemctl start crond
$ systemctl list-unit-files

UNIT FILE STATE
...
crond.service enabled
...



How to use crontab?

Crontab 리스트 조회

1
$ crontab -l

crontab에 등록된 스케쥴러 작업 리스트를 확인합니다.

Crontab 편집

1
$ crontab -e

crontab 예약 작업 리스트를 편집 할 수 있는 에디터가 실행 되며, 편집합니다.

Crontab 리스트 삭제

1
$ crontab -r

crontab에 등록된 모든 스케쥴러 작업 리스트를 삭제합니다.



Crontab 작성 방법

1
2
3
4
5
6
7
8
9
* * * * *  수행할 명령어
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───────── 요일 (0 - 6) (0:일요일, 1:월요일, 2:화요일, …, 6:토요일)
│ │ │ └───────── 월 (1 - 12)
│ │ └───────── 일 (1 - 31)
│ └───────── 시 (0 - 23)
└───────── 분 (0 - 59)

crontab -e 명령어를 사용해 위와 같은 형식으로 스케쥴러를 등록합니다.



Example crontab

간단한 텍스트를 파일에 쓰는 것을 해보겠습니다.

1
$ crontab -e

crontab 편집기를 열고 작업을 등록합니다.

1
* * * * * echo "Hello 두번 개발하는 블로그" >> ~/test.txt

ESC + qw 저장하고 밖으로 빠져 나옵니다.

1분이 지나게 되면 root 경로에 test.txt 파일이 생긴 것을 볼 수 있으며, 파일 내부에는 Hello 두번 개발하는 블로그 라는 텍스트가 작성 되어 있는 것을 볼 수 있습니다.



다른 예제

특정 시간에 실행 1

매주 일요일 새벽 4시 20분에 test! 텍스트를 root 경로 밑 test.txt 파일에 작성

1
20 4 * * 0 echo "test!" >> ~/test.txt

특정 시간에 실행 2

매주 화요일 오후 1시 30분, 40분, 50분에 test! 텍스트를 root 경로 밑 test.txt 파일에 작성

1
10,20,30 13 * * 2 echo "test!" >> ~/test.txt



Crontab 작성 기호 종류

1
2
3
4
* # 범위 내 모두 실행
, # 나열된 숫자 중 일치하는 값에 실행
- # 두 숫자 사이에 포함된 범위에 실행
/ # 지정한 숫자에 실행