반응형
Notice
Recent Posts
Recent Comments
관리 메뉴

꿈꾸는 사람.

[Cron][Crontab] 리눅스 작업 스케줄러 본문

IT/Linux

[Cron][Crontab] 리눅스 작업 스케줄러

현무랑 니니 2016. 6. 29. 14:14
반응형



시스템 관리자는 보안이나 시스템의 관리 등을 위해 주기적으로 동일한 작업을 반복 수행해야 한다.

리눅스에서 특정 시각에 명령이나 프로그램이 수행되도록 하는 리눅스용 작업 스케줄러인 크론(Cron)이란 도구를 소개한다.


크론 (Cron)

미리 구성된 시간에 실행되도록 작업을 할당하는 스케줄링 도구가 크론이다.

이것으로 일정한 간격으로 시스템에서 수행될 일들을 자동화할 수 있다.

매시간 또는 매일 수행해야 하는 작업과 일년에 한 두 번 수행하는 큰 일도 동등하게 관리한다.


다음은 크론에 관련된 파일들이다.

파일 

 설명

 /usr/sbin/cron

 크론 데몬.

 /usr/sbin/anacron

 크론과 같이 동작하는 프로그램.

 서버가 일정 시간 중지되었을 때에도 작업이 실행되는 것을 보장하기 위해 사용하는 도구이다.

 /usr/bin/crontab

 사용자 별 crontab 파일들을 관리한다.

 /bin/run-parts

 경로에 있는 스크립트나 프로그램을 실행한다.

 /etc/crontab 시스템 크론탭 파일.


Cron 동작하는 방식.

Cron은 부팅할 때 시작되고 데몬으로 백그라운드로 실행된다. 즉, 사용자의 개입이 없이 실행되고 실행을 결정할 어떤 이벤트가 발생하기를 기다리는게 된다.


이벤트가 발생하면, 크론은 예정된 명령이 무엇이건 실행한다.

크론은 어떤 시점에 무슨 명령을 실행할지 결정하는데 crontab이란 파일을 읽어서 수행 한다.


Crontab 읽는 방법 

시스템 전체에 사용되는 crontab인 /etc/crontab은 다음과 같다.

# /etc/crontab: system-wide crontab

# Unlike any other crontab you don't have to run the `crontab'

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.


SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


# m h dom mon dow user  command

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

#


위 내용은 system crontab이고 수정하지 말아야 하며 시스템이 갱신될 때 파일이 교체되므로 수정사항을 잃어버리게 된다.

때문에 사용자 자신의 crontab을 사용하는 것이 바람직하다.


파일의 첫 두 줄은 명령을 실행할 쉘과 프로그램을 검사할 경로를 명시한다.

파일의 나머지는 실제 명령과 예약을 나타낸다.

[명령어와 예약 시간]

*     *     *     *     *   사용자  수행할 명령어

┬   ┬   ┬   ┬   ┬

│   │   │   │   │

│   │   │   │   │

│   │   │   │   └───────── 요일 (0 - 6) (0 =일요일)

│   │   │   └────────── 월 (1 - 12)

│   │   └─────────── 일 (1 - 31)

│   └──────────── 시 (0 - 23)

└───────────── 분 (0 - 59)

아스테리스크 (*)는 "가능한 모든 값"을 의미하고 와일드카드로 사용된다.

세 번째, 네 번째, 다섯 번째 열은 어느 날에 명령이 실행될지를 결정한다.


실행 간격은 / 다음에 나오는 숫자로 지정할 수 있다.

예를 들어 매 2시간 간격으로 실행하려면 시간 열에 "*/2"를 쓰면 된다.


[시스템 크론탭의 예]

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

매 시간 17분(1:17am, 2:17am, 3:17am 등)에  root 사용자 권한으로 지정된 명령을 수행한다.


run-parts와 cron 디렉터리 사용하기 

run-parts 명령은 지정된 경로에 있는 모든 실행 파일(스크립트나 프로그램)을 실행하는 간단한 명령이다.

이것은 실행 파일들을 한 곳에 배치하여 지정된 시간에 여러 스크립트를 실행할 수 있게 하므로 Cron과 함께 널리 사용된다.


사용자 지정 Crontab 사용하기 

"crontab" 명령으로 사용자 자신의 예약된 작업을 생성할 수 있다.

사용자 고유의 crontab에는 사용자 열이 없다.

 명령

 설명

 crontab -l

 현재의 crontab에 등록된 작업 보기

 crontab -e

 편집기로 현재 사용자에 대한 cron작업의 확인/수정한다.

 crontab -r

 현재 사용자의 예약작업을 모두 삭제


반응형
Comments