[Ubunt] CRON을 이용한 반복작업 수행하기[Ubunt] CRON을 이용한 반복작업 수행하기

Posted at 2019.09.29 15:49 | Posted in Linux/Ubuntu




참고 : https://soooprmx.com/archives/6786

참고 : https://webdir.tistory.com/174

참고 : https://blog.naver.com/tyboss/70048237053

참고 : https://jhnyang.tistory.com/68




리눅스에 크론의 사용법에는 /etc/crontab을 직접 수정하는 방법과


crontab -e 로 등록하는 방법 두가지로 나뉘며


두 방식은 설정하는 방법과 동작이 다르다.


해당 포스팅은 /etc/crontab 에서 직접 수정하여 사용하는 방법을 다룬다.







■ 크론이란?



-. CRON은 유닉스 사용자로 하여금 특정한 명령이나 스크립트를 지정한 시간 / 날짜에 자동으로 실행하게 해주는 프로그램의 이름이다.


-. 주기적으로 시스템 백업 스크립트를 실행하는 등 시스템 관리자에 의해 많이 사용되며, 그 외에도 특정한 작업을 스케줄링하기 위해 사용될 수 있다.


-. 최근에는 자동으로 인터넷에 접속해서 이메일을 다운로드 받는 등의 용도로 쓰이기도 한다.




# 실행된 크론 이력 확인하기

 $ ps aux | grep crond




-. CRON은 일종의 데몬이다. 즉 한 번 실행되면 시스템에 상주하며 필요할 때마다 동작한다.


-. 비슷한 예로 웹서버도 일종의 데몬으로 웹페이지에 대한 요청이 들어올 때만 작동한다.


-. 데몬 크론은 crond라는 이름을 갖는데, 설정 파일 혹은 crontab에 기록된 날짜나 시간이 될 때까지 기다린 다음 동작을 시작한다.


-. 대부분의 유닉스 배포판에서 crond는 이미 포함되어 있고, 시작 스크립트에 기록되어 있다.








■ 크론 세팅하기




VIM을 사용하여 crontab을 수정한다.


 $ sudo vim /etc/crontab



위와 같이 crontab 창이 열리면


# m h dom mon dow user command 라는 주석 아래로


실행 명령들이 쭉 적혀있는 것을 볼 수 있다.


작성 방법은 아래와 같다.



 crontab 설정방법

설명

 * * * * *(실행주기) 사용자계정 명령어 /home/사용자계정/실행파일.sh

샘플

 00 * * * * saak sh /home/saak/shell_script.sh

※ 샘플의 명령은 매시 정각마다 shell_script.sh 파일을 saak 사용자의 권한으로 실행한다라는 의미이다.



위와 같이 작성해 주면 되는데.


실행주기를 뜯하는 에스터리스크( * )기호와

 

명령 권한을 가지는 사용자 계정


실행 명령어 혹은 실행될 스크립트 파일을 지정해준다.

(되도록이면 쉘 스크립트.sh 파일을 만들어서 진행을 해주는것이 좋다.)




# CRON 환경변수 설명

순 서

설    명

Minute

 · 분(Minute)을 나타내며, 몇 분에 실행될 것인지를 정의한다.

 · 00 ~ 59 사이의 숫자값을 사용한다.

Hour

 · 시(Hour)을 나타내며, 몇 시에 실행될 것인지를 정의한다.

 · 00 ~ 23 사이의 숫자값을 사용한다.

Dom

 · 일(Day of Month)을 나타내며, 몇 일에 실행될 것인지를 정의한다.

 · 1 ~ 31 사이의 숫자값을 사용한다.

Month

 · 월(Month)을 나타내며, 몇 월에 실행될 것인지를 정의한다.

 · 1 ~ 12 사이의 숫자값을 사용한다.

 · 숫자 이외의 월의 영문자를 사용할 수 있다.
   ( 1월 : jan, 2월 : feb, 3월 : mar, 4월 : apr, 5월 : may, 6월 : jun,

     7월 : jul, 8월 : aug, 9월 : sep, 10월 : oct, 11월 : nov, 12월 : dec )

Dow

 · 요일(Day of Week)을 나타내며, 실행될 것인지를 정의한다.

 · 0 ~ 6 사이의 숫자값을 사용한다.

 · 숫자 이외의 요일의 영문자를 사용할 수 있다.
   ( 일요일 : sun, 월요일 : mon, 화요일 : tue, 수요일 : wed, 목요일 : thu, 금요일 : fri, 토요일 : sat )

Usr

 · 명령을 실행할 사용자를 지정한다.

 · user-name 사용자 이름을 입력한다.

 · 되도록이면 root(관리자)보단 권한을 가지고 있는 사용자를 지정하는 것이 좋다.

Cmd

 · 실행할 명령을 작성한다.




모든 설정이 완료되면 CRON을 한번 재시작 시켜준다.


 $ sudo service cron reload

 $ sudo service cron restart










■ 크론 실행주기 사용예제




크론의 실행주기 (Minute), (Hour), (Dom), (Month), 요일(Dow)의 값을 설정할때.

몇가지 방법을 통해 실행주기를 설정할 수 있다.

먼저 CRON에서 연산기호를 사용하는 방법을 알아보자.



# CRON 연산기호 사용방법

기 호

설    명

*

 · 각 필드 자리에 에스터리스크( * ) 기호가 오면 해당 필드의 모든 값을 의미한다.
   예를 들어 Hour 필드에 *가 오면 매 시간, Month 필드는 매 일, Dow 필드의 *는 매월을 의미한다.

-

 · 하이픈( - ) 기호는 숫자와 숫자 사이에 사용되어 해당 숫자들 사이의 값을 구한다.

   예를 들어 1-10이라고 표현하면 1부터 10사이의 모든 값을 의미한다.

,

 · 콤마( , ) 기호는 지정한 값의 구분을 위해 사용된다.

 · 주로 불규칙한 값을 지정할때 사용된다.

   예를 들어 Hour 필드에 2, 3 ,5라고 입력하면 2시, 3시 5시에 실행된다.

/

 · 슬래시( / ) 기호는 연결된 설정 값 범위에서 특정 주기로 나눌 때 사용합니다.



위의 기호를 확인 했다면 아래의 예를 살펴보도록 하자.



① 9시부터 17시 사이의 시간에 매 15분간격으로 실행

실행주기

      */15    9-17    *    *    *



② 매월 1~15일 20~25일 그리고 17일의 정오에 실행

실행주기

     *    12    1-15,17,20-25    *    *



③ 10일, 12일, 14일, 16일 17시마다 실행

실행주기

     *    17    10-16/2    *    *



④ 매일 평일 오후1시에 실행

실행주기

     *    13    *    *    mon,tue,wed,thu,fri
     *    13    *    *    1,2,3,4,5
     *    13    *    *    1-5



⑤ 매달 16일이나, 매주 월요일 1시에 실행

실행주기

     *    1    16    *    *
     *    1    *    *    mon

※ 해당 예제와 같이 요일, 날짜등이 동시에 설정된 경우에는 두 조건 중 한 조건을 만족하면 실행된다.
   매달 16일과, 월요일이라는 두개의 설정을 하나로 압축한 예제이다.









Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기