본문 바로가기
IT 학습 공간 ::)

리눅스 크론탭(crontab)설정

by 에스타롯사 2019. 6. 9.

안녕하세요 롯사입니다.

 

unix 기반의 리눅스 시스템에는 예약된 작업을 주기적으로 실행시킬 수 있는 잡 스케쥴러 cron 있습니다.

 

보통 cron을 사용하는 목적은 고정된 시간과 날짜 그리고 간격에 주기적으로 예약된 잡들을 실행시키는 데 있으며 

 

그리고 예약된 작업은 셸 명령어들이 주어진 일정에 주기적으로 실행하도록 규정해놓은 crontab ( cron table ) 파일에

 

의해서 동작합니다. 윈도의 예약된 작업 스케쥴링 기능이라고 생각하시면 되겠습니다.

 

보통 잘 정의해놓은 crontab의 스크립트 파일 설정들은 사람이 놓칠 수 있는 보안적인 설정 부분들을 자동 스케쥴링

 

기능에 의해 보안해주고 관리할 수 있기 때문에 server를 운영하시는 분이라면 필수적으로 사용해야 하는 유용한

 

도구입니다. 설정하는 방법과 명령어에 대해서 꼭 체크하시고 넘어가시기 바랍니다.

 

 

 

 

사용하는 명령어와 옵션


구문 : crontab [option]

 

 

* crontab -e새로운 예약된 작업을 등록하거나 수정할 때 사용하는 옵션입니다. 무엇인가 새로운 설정들을 편집하고 

                   정의해야 하기 때문에 vi 에디터와 함께 편집 모드가 활성화됩니다.

* crontab -l크론탭에 설정된 내용들을 확인하거나 출력할 때 사용합니다.

                  만약 출력이 되지 않는다면 설정이 없는 것입니다.

 

* crontab -r크론탭에 설정된 내용을 삭제할 때 사용합니다.

 

 

설정 예시 :  * * * * * [명령문]

 

ex ) * * * * * iptables -F 

* * * * * 이 의미하는 시정된 시간과 날짜에 iptables -F 명령어를 실행하라는 의미입니다.

* * * * * 의미하는 것에 대해서 아래에 설명하겠습니다.

 

 

 

 

주기 설정


* * * * *
요일
0~59 (분) 0~23 (시) 0~31 (일) 1~12 (월) 0 또는 7 (일요일)
1 (월요일)
2 (화요일)
3 (수요일)
4 (목요일)
5 (금요일)
6 (토요일)

 

위의 표는  * * * * * 이 의미하는 뜻을 -----------------------------------------------> 순차적으로 표현한 것입니다.

 

보통 설정을 할 때 하나의 스케줄링을 한 줄에 위와 같은 형태로 설정을 하며 두줄로 하나의 스케줄링을 표현할 수

 

없습니다. * 표현된 부분에 각각의 지정된 숫자를 표기함으로써 일정을 지정합니다.

 

 

 

 

 

주기별 설정 예제


* 매분마다 실행

 

* * * * * [명령문]

/1 * * * * * [명령문]

 

위와 같이 매분마다 실행시킬 때는 * * * * * ( /1 * * * * )와 같은 두 가지 형태로 사용합니다.

/1 은 1분마다 실행시킨다는 의미입니다.

 

ex ) * * * * * /home/testuser/testpractices.sh

매분마다 testpractices.sh 스크립트 파일을 실행시키라는 의미입니다.

 

 

 

* 매시 정각에 실행

 

0 * * * * [명령문]

 

ex ) 0 * * * * /home/testuser/testpractices.sh

매시 정각에 testpractices.sh 스크립트 파일을 실행시키라는 의미입니다.

 

 

 

* 매시 20분, 50분에 실행

 

20,50 * * * * [명령문]

 

위와 같이 , (콤마)를 사용하면 해당하는 시간을 직접 중복 지정할 수 있습니다.

 

ex) 20,50 * * * * /home/testuser/testpractices.sh

매시 20분 50분에 각각 실행시킨다는 의미입니다.

 

 

 

* 6시간마다 30분에 명령문 실행

 

30 */6 * * * [명령문]

 

위에 설명한 바와 같이 / 를 사용하면 시간 주기를 지정할 수 있습니다.

 

ex ) 30 */6 * * * /home/testuser/testpractices.sh

6시간마다 해당하는 시간의 30분에 실행시킨다는 의미입니다.

 

 

 

* 월~금 5시에 명령문 실행

 

0 5 * * 1-5 [명령문]

 

- 기호를 사용하여 주기 지정도 가능합니다.

 

ex) 0 5 * * 1-5 /home/testuser/testpractices.sh

월~금 평일 5시에 실행시킨다는 의미입니다.

 

 

 

* 일요일, 토요일 5시에 명령문 실행

 

0 5 * * 0,6 [명령문]

 

위에서도 언급했듯이 , (콤마)를 사용해서 직접 중복지정이 가능합니다.

 

ex) 0 5 * * 0,6 /home/testuser/testpractices.sh

일요일, 토요일 5시에 실행시킨다는 의미입니다.

 

 

 

 

 

 

cat var/log/cron


수행 이력과 변경된 내용에 대한 로그는 해당 경로에서 확인이 가능합니다.

 

 


 

crontab 설정은 사용하는 기호와 구문만 확실하게 알고 있으면 설정하는데 크게 어려움이 없지만 표기하는

방법이 약간 생소할수 있습니다. 익숙해질 때까지 반복하셔서 꼭 학습하시기 바랍니다.

이만 포스팅을 마치겠습니다.