Skip to content

crontab 예약실행

조회 수 22914 추천 수 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
번호 제목 글쓴이 날짜 조회 수
» crontab 예약실행 file ADMINPLAY 2009-09-22 22914
126 [Linux] too many files 에러가 날때 ADMINPLAY 2009-09-20 23869
125 서버로그 관리 ADMINPLAY 2009-09-20 22207
124 [리눅스] 파일의 속성관리를 위한 chattr실무활용 -2- ADMINPLAY 2009-09-09 15782
123 [리눅스] 파일의 속성관리를 위한 chattr실무활용 -1- ADMINPLAY 2009-09-09 17872
122 ipchains bridge 방화벽 정리 자료. file ADMINPLAY 2009-09-08 23181
121 웹에서 ssh 를 지원해준다. [webssh] file ADMINPLAY 2009-09-08 23215
120 포트 포워딩 도구 ipmasqadm file ADMINPLAY 2009-09-08 23550
119 리눅스서버 응급복구와 삭제파일 복구 ADMINPLAY 2009-08-19 18860
118 리눅스에서 베드섹터 검사명령어 ADMINPLAY 2009-08-18 23553
117 CentOS 설치후 기본언어를 한국어로 바꾸기 ADMINPLAY 2009-08-18 21050
116 리눅스서버 장애처리및 삭제파일 복구 ADMINPLAY 2009-08-08 21071
115 커널 2.6으로 업그레이드!「A to Z」 ADMINPLAY 2009-08-08 76358
114 Cent OS-5.2 설치 문서 GUI ADMINPLAY 2009-08-08 20870
113 커널 컴파일 장애 처리 perl: warning: Please check that... ADMINPLAY 2009-08-08 24427
112 rrdtool 컴파일시 에러 configure: error: Please fix the... ADMINPLAY 2009-08-08 67950
111 FreeBSD 커널패닉 복구하기 ADMINPLAY 2009-08-08 21727
110 usb 부팅 리눅스 만들기(knoppix) ADMINPLAY 2009-08-08 26483
109 인터넷 속도 단위 (bps, cps) ADMINPLAY 2009-08-03 23341
108 리눅스 로그파일 관리 [로그파일 삭제하는 방법] ADMINPLAY 2009-07-31 23582

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234