본문 바로가기

OS/Linux

#17. crontab(영구적 예약설정)

이번 소개에서는 crontab에 대해서 소개해드리도록 하겠습니다. crontab은 일정한 시간에 예약해놓은 작업을 자동적으로 수행해주는 아주 편리한 기능을 설정하는 파일입니다.


만약 crontab이 설치가 안되있다면??

먼저 crontab을 시작하기전에 crontab 페키지가 깔려있는지부터 확인을 해봐야합니다.

'rpm -qa | grep cron'을 쳐서 vixie-cron 관련된 문구가 뜨는지 확인부터 해봅시다.

만약 아무 문구가 뜨질 않으면 'yum install vixie-cron'으로 설치 ㄱㄱㄱ



설치가 끝났으면 일단 crontab에 작성하는 형식부터 알아보도록 하겠습니다.

기본적으로 한줄에 하나의 예약을 설정합니다.


*    *    *    *    *    [명령어]

         요일


분:    0~59분까지 설정가능

시:    0~23시까지 설정가능

일:    1~31일까지 설정가능

월:    1~12월까지 설정가능

요일:    0~6요일 까지 설정가능(0: 일요일)


각 필드의 *의미:    모든범위를 뜻합니다. 예를 들어 *분은 매분을 뜻합니다.


범위설정:    몇부터 몇까지의 범위설정도 가능합니다.

예를들어 10 10-15 * * * 로 설정한다면, 매일 10시부터 오후3시사이 매시간 10분마다 라는 뜻을 가지게됩니다.


불규칙범위설정:    ,(콤마)를 사용하여 설정 가능합니다.

예를들어 0,30 * 1,12 * 로 설정한다면, 1월과 12월에 매일 정각, 30분 마다 라는 뜻을 가지게됩니다.


위에 방식만 알고계신다면 crontab을 설정하는데에선 아무문제 없이설정이 가능합니다.

이제부터 명령어에 대해서 알아보도록 할께요.


crontab [옵션] [계정명]

옵션

-e:    crontab 설정을 할수있는 설정모드로 전환(vim사용)

-l:     crontab에 설정되어있는 목록을 볼수있다

-r:     crontab에 저장되어있는 모든 설정을 지운다


*-r옵션은 통째로 모두 지워버립니다. 하나하나 씩 골라 지워야만 하는 설정이 존재한다면 -e옵션으로 설정모드 전환후 한줄씩 삭제 하는걸 추천드려요.


계정명

계정명을 따로 써주지 않을경우, 현재 로그인되어있는 계정으로 인식을합니다.

각 계정마다 crontab을 따로 가지고있기때문에 만약 현재 root로 로그인이 되어있고 crontab -e만 써서 설정모드로 변환하게 되면 그 설정파일은 root를 위한 crontab설정파일이 열리게 되는거죠.


그럼 이제부터 직접 설정을 해보도록 하겠습니다.


crontab -e로 설정모드로 들어가 매분마다 /practice/cronTest라는 파일에 1min이라는 문구가 덮어 쓰이도록 설정했습니다. 설정이 끝나고 vim종료와 똑같이 :wq로 나옵시다.



1분이 경과후 cronTest라는 파일이 생겨나고 내용은 1min이라는 문구를 가지고있네요.


crontab권한

crontab권한은 특정 사용자만 crontab을 사용할수있도록 혹은 사용하지 못하도록 설정할수있는 기능입니다.


/etc/cron.d 라는 디렉토리가 존재합니다. 이 디렉토리 안에 cron.allow와 cron.deny라는 파일이 존재 하지 않지만 우리가 직접 생성하여 권한을 설정할수있습니다.


cron.allow 

cron.allow파일을 생성해 파일안에 존재하는 사용자만 crontab기능을 사용할수있습니다.


cron.deny

cron.deny파일을 생성해 파일안에 존재하는 사용자는  crontab기능을 사용할수 없습니다.


만약 두개다 존재 하지 않을경우엔, 오직 root만 crontab을 사용할수있습니다.

둘중 하나만 존재할경우 파일에 맞는 조건을 따라갑니다

예를 들어 allow.deny파일만 존재 한다면 deny파일에 적혀있는 사용자를 제외한 모든 사용자가 crontab을 사용할수있는거지요.