Skip to content

crontab 예약실행

조회 수 22863 추천 수 0 2009.09.22 22:20:45


주기적이고 반복적인 cron설정작업을 할 수 있는 crontab 개론

 

 


crontab은 시스템의 주기적인cron작업의 설정, 수정등을 하는 명령어입니다. 시스템에서 가장 중요한 데몬(daemon)중의 하나인 cron와 직접적인 관련이 있는 명령어로서 수퍼유저(root) 또는 일반사용자들의 주기적이고 반복적인 특정 작업의 자동화를 설정하는 명령어입니다.


이 명령어로 설정한 작업이 주기적으로 실행되려면 cron 데몬이 실행상태에 있어야합니다.

그리고 cron 데몬은 /etc/init.d/cron스크립트에 의해 시작, 종료, 재시작될 수 있습니다.

cron 데몬에서 사용할 스케줄 정보는 /etc/crontab 화일과  /etc/cron.d 디렉토리 아래에 있는 모든 파일입니다.

그러니까 정리를 하면 cron 데몬은 부팅할때에 뜨고,  뜬 뒤에는 /etc/cron.d아래에 있는 모든 스케줄 정보 화일과  /etc/crontab 스케줄 정보 화일을 가지고 동작하게 됩니다.

 


따라서 crontab이라는 명령어를 정확하게 이해하고 사용하려면 다음과 같은 데몬과 파일들을 정확하게 이해하셔야 합니다.

 

 

 

- cron 데몬

- /etc/init.d/cron 스크립트

- /etc/crontab 파일(cron 설정파일)


- /var/spool/cron/crontabs 디렉토리내의 크론설정파일들

 


 


명령어위치: /usr/bin/crontab

 


사용형식

crontab [ -u 사용자ID ] 파일

crontab [ -u 사용자ID ] { -l | -r | -e }

 

 

cron 데몬

 


- cron데몬파일 : /usr/sbin/cron

- cron데몬의 시작/종료/재시작 : /etc/init.d/cron [start/stop/restart]

- cron 실행확인 : ps ?ef | grep cron <- cron데몬파일(/usr/sbin/cron)

 

실행예)

1.gif

 

매일 7시 30분 실행

 2.gif

 

- 시스템크론 설정디렉토리 :

/etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly,

/etc/cron.d
 

- 사용자크론 설정파일 :

/var/spool/cron/crontabs/[사용자명] (사용자계정명과 동일한 파일명으로 존재함.)


 

- 사용자크론설정 명령어 : /usr/bin/crontab(즉, crontab 명령어)


 

 

cron에 작업을 설정하는 방법은 크게 2가지 입니다.

1. /etc/crontab를 건드린다

2. 사용자별 cron설정을 한다<-추천!


 

 

1. /etc/crontab(cron 설정파일) - 시스템크론 설정

 3.gif

  

  var keep_signed_msg = "브라우저를 닫더라도 로그인이 계속 유지될 수 있습니다.\n\n로그인 유지 기능을 사용할 경우 다음 접속부터는 로그인을 하실 필요가 없습니다.\n\n단, 게임방, 학교 등 공공장소에서 이용시 개인정보가 유출될 수 있으니 꼭 로그아웃을 해주세요"; xAddEventListener(window, "load", function(){ doFocusUserId("fo_login_widget"); });

SHELL=/bin/sh
시스템이 사용할 쉘의 종류.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
실행파일을 찾을 경로 설정.
 
#m h dom mon dow user commad 에서 각각이 의미하는 것은 다음과 같습니다

-> m : 분을 의미 (0 ~ 59 까지 사용)

-> h : 시를 의미 (0 ~ 23 까지 사용)

-> dom : 날짜를 의미 (1 ~ 31 까지 사용)

-> mon : 달을 의미 (1 ~ 12 까지 사용)

-> dow : 요일을 의미 (0 ~ 7 까지 사용, 0 과 7은 일요일을 나타냄)

-> user : 유저(실행권한)


-> command : 실행할 명령

 

* 구분자는 space 로 한다.


 4.gif


 

  

2. crontab(cron 설정파일) - 사용자크론 설정

 

 [crontab 옵션]

 

-l : 현재 crontab 에 의해 설정된 내용을 출력

cron설정파일을 쓰면 이것은 /var/spool/cron/crontabs/[사용자명](ex : /var/spool/cron/crontabs/root)으로 저장됩니다만 이 디렉토리로 접근하기 위해서는 root계정을 필요로 합니다. 그래서 설정된 cron명령 목록을 확인하기 위해선 # crontab -l 을 사용합니다.

 5.gif

 

 

-e : crontab 의 내용을 작성하거나 수정

 

-> crontab -e

 6.gif


 

/home/ban/a.txt에 매시간 1분일때마다 실행결과값이 입력됨

 

첫줄에 #m h dom mon dow command라고 적혀있습니다. 각각이 의미하는 것이 무엇인지는 위쪽을 참고하세요. 주의할것은 /etc/crontab를 건드릴때와 달리 user부분이 없다는 것입니다.(사용자마다 정해주는 것이니까 이미 누구 권한으로 실행할지가 정해졌기 때문이지요)


주의사항1 : “*”문자

각 필드에는 “*”문자가 올 수 있으며, 이는 각 필드에 해당하는 모든 숫자를 의미 합니다. 예를 들어 “일(day)”필드자리에 “*”로 설정되었다면 설정된 명령어가 매일 실행이 된다는 의미입니다.


주의사항 2 : “-”문자

각 필드자리에 “-”문자가 올 수 있습니다. 예를 들어 일(day)필드자리에 “11-15”로 설정되어 있다면 11일, 12일, 13일, 14일, 15일을 의미합니다. 그리고 시간(hour)필드자리에 “1-5”로 설정되었다면 1시, 2시, 3시, 4시, 5시를 의미합니다.


주의사항 3 : ","문자

각 필드자리에는 ","문자가 올 수 있습니다. 예를 들어 일(day)필드자리에 “1,11,21”로 설정되었다면 1일, 11일, 21일을 각각 의미합니다. 그리고 시간(hour)필드자리에 “3,6,9”로 설정되었다면 3시, 6시, 9시를 각각 의미합니다.


 

 주의사항 4 : "/"문자

각 필드자리에는 "/"문자가 올 수 있습니다. 예를 들어 시간(hour)필드자리에 “*/2”로 설정되었다면 매2시간 의미합니다.

 

주의사항 4 : 1개의 예약 작업은 1개 라인으로 작성


 

결과화면

 7.gif

 

 

ex)

① 월요일부터 금요일까지 /tmp/start 라는 스크립트를 실행시키고 싶을때.

-> 0 12 * * 1-5 /tmp/start (0분 12시 매일 매달 월-금 /tmp/start 실행)

② 1월부터 10월까지 2개월마다 /tmp/babo 라는 스크립트를 실행시키고 싶을때.

-> 0 12 1 1-10/2 * /tmp/babo (0분 12시 1일 1-10달/2달 매일 /tmp/babo 실행)

* /2 는 2달마다 라는 표시. 만약 5일 마다 작업을 수행시키고 싶은면 0 1 /5 * * [명령] 을 하면 된다. (5일마다 1시에 명령실행)

③ 월,수,금 오전 4시에 /tmp/haha 라는 스크립트를 실행시키고 싶을때.

-> 0 4 * * 1,3,5 /tmp/haha (0분 4시 매일 매달 월,수,금 /tmp/haha 실행)


 

 

-r : crontab의 내용을 삭제

 

-u : root 권한자가 해당사용자의 crontab 파일을 다룰때 사용

 

 

ㅇ 사용자 cron 설정시 사용명령어(crontab)

- 개별사용자의 cron설정 방법 : crontab ?e

- 개별사용자의 cron설정 확인 방법 : crontab ?l

- 개별사용자의 cron설정 삭제 방법 : crontab ?r

- root의 일반사용자 cron설정 방법 : crontab ?u 사용자명 ?e

- root의 일반사용자 cron설정 확인 방법 : crontab ?u 사용자명 ?l

- root의 일반사용자 cron설정 삭제 방법 : crontab ?u 사용자 -r

 


ex)

① 작업 목록을 볼때

-> crontab -l

② root 권한자가 ban 사용자의 crontab 을 작성하거나 수정할때

-> crontab -e -u ban

③ aaa 란 파일을 crontab 으로 사용할때

-> crontab aaa (여기서 aaa 파일은 crontab 형식에 맞게 입력되어 있어야 한다.)

④ crontab 내용을 삭제할때

-> crontab -r

 

cron 사용자 제한( root사용자는 위의 두 파일에 영향을 받지 않는다.)   

 


각 파일의 한 라인은 한명씩의 사용자 이름을 기록하면 된다.

기본적으로 /etc/cron.allow (허가목록) 과 /etc/cron.deny(거부목록) 파일이 없으므로

필요시 만들어서 사용하면 된다.


      ※ /etc/cron.allow (허가목록) 과 /etc/cron.deny(거부목록) 을 참조하게된다.

            1./etc/cron.deny 만 존재하는경우

               → 기본적으로 모든사용자가 사용가능하고 cron.deny 에 등록된 사용자만

                    사용불가능하다.

            2./etc/cron.allow 만 존재하는 경우

                → cron.allow 파일에 등록된 사용자만 사용가능하다.

            3. 두 파일 모두 없을경우

                → 모든 사용자가가능하다

            4. 두 파일 모두 있을경우

                → cron.deny 내용을 무시하고 cron.allow 명기된 사용자만 사용가능하다

 

 

사용예

 8.gif

 

 

*참고 : 로그파일

로그설정파일 초기설정=> vi /etc/syslog.conf을 열면 cron 로그파일 주석(#)처리 되어있음

#cron.*|.|...|...|.../var/log/cron.log(주석을 풀면 cron 로그파일 실행됨)

 9.gif

 

 

에디터 변경 팁

nano네서 vim으로 변경하려면

->export EDITOR=vim 또는 export VISUAL=vim 둘다 가능

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

top 명령어 정리

그누보드4와 MySQL5를 연동시 초기 관리자 계정이 생성되...

오라클시작

리눅스서버 응급복구와 삭제파일 복구

Linux 특수 퍼미션

외국 자료실 (Unix Linux Windows)

rsync ssh 포트 말고 다른포트 사용법

리눅스 java tocmat 설치

관리, 개발자를 위한 vi 환경 설정 ( vim-enhanced)

리눅스 터미널에서 사용하는 단축 키

마우스 오른쪽 버튼 막기...

[설치/설정] APM 튜닝정보 조금

rm -rf * 잘못 쳤을 때 울지 않기!

메신저 프로그램 사용 포트

GBIC(지빅) 이 뭘까?? file

우분투에 Samba 를 설치하자

TOP 프로그램에서 사용하는 기능키

clocksource tsc unstable 에러

ssh 특정 ip or 특정대역폭만 접속 허용

리눅스에서 테잎드라이브 쓰는방법

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234