'cron'에 해당되는 글 1건

  1. 2010.07.01 Cron을 이용해서 특정 시점에 작업 수행하기 (9)

먼저 이 내용은 cent os를 기반으로 하는 내용임을 알려드립니다.


리눅스에서 특정 시각마다 원하는 작업이 있다면 cron을 사용해봅시다. 웹 서버로 사용될 경우에는 cron을 이용해서 특정 시각에 DB값을 업데이트 한다든지 등의 유용한 작업을 수행할 수 있습니다.

 

1.Cron이 실행 중인지 확인하는 명령어

ps –ef | grep crond

위의 명령어를 이용하면 현재 서버에서 cron이 실행 중인지 아닌지 확인할 수 있습니다.

 

2.cron 실행/중지/재시작

Cron 실행

/etc/rc.d/init.d/crond start

Cron 중지

/etc/rc.d/init.d/crond stop

Cron 재시작

/etc/rc.d/init.d/crond restart

위의 명령을 이용하면 cron을 실행하거나 중지, 재시작 할 수 있습니다. 물론 그러려면 충분한 권한이 있어야 할 것입니다.

 

3.시스템 cron

시스템 크론은 시스템에 기본적으로 설정되어 있는 cron으로서 거의 대부분의 시스템에서 root에게만 권한이 주어져 있습니다.

/etc/crontab은 시스템에서 주기적으로 실행되는 파일들이 저장된 파일입니다.

위의 스크린 샷은 /etc/crontab 파일을 열어본 모습입니다. 여기에는 4개의 자동 실행에 관련된 내용이 있습니다.

 

01 * * * * root run-parts /etc/cron.hourly

매년 매월 매일 매시 01분에 /etc/cron.hourly에 있는 파일이 실행됩니다.

 

02 4 * * * root run-parts /etc/cron.daily

매년 매월 매일 4시 02분에 /etc/cron.daily에 있는 파일이 실행됩니다.

 

22 4 * * * root run-parts /etc/cron.weekly

매년 매월 매일 4시 22분에 /etc/cron.weekly에 있는 파일이 실행됩니다.

 

42 4 1 * * root run-parts /etc/cron.monthly

매년 매월 1일 4시 42분에 /etc/cron.monthly에 있는 파일이 실행됩니다.

 

눈치가 빠른 사람이라면 벌써 이해했을 것입니다. 위의 실행 내용을 보면 5개의 숫자가 있는데 앞에서부터 차례대로 "분,시,일,월,요일" 을 의미합니다.

즉, 원하는 시각에 실행하고 싶다면 이 5개의 숫자를 잘 설정하면 됩니다.

 

4.사용자 cron

사용자 cron은 root와 일반 사용자가 개별적으로 설정할 수 있는 cron 입니다.

크론 설정 보기

crontab –l

크론 설정 편집

crontab – e

크론 설정 삭제

crontab -r

 

crontabl –l 명령을 수행하면 아래와 같이 현재 사용자가 등록한 크론 설정의 리스트를 볼 수 있습니다.

 

 

그리고 crontab –e를 수행하면 어래와 같이 현재 사용자가 등록한 크론 설정을 수정할 수 있습니다.

 

 

5.매일 0시0분에 test.php수행하기

마지막으로 이 글을 쓴 궁극적인 목적인 php파일을 매일 수행하도록 해보도록 하겠습니다. test.php파일은 DB에 접속해서 날짜를 비교한 다음에 오늘 날짜와 같으면 완료 속성을 1로 바꾸는 기능을 하는 php 파일입니다. 이를 매일 수행하기 위해서는 아래와 같이 입력해주면 됩니다.

0 0 * * * lynx http://donxu.untoc.com/DB/test.php

여기에서 중요한 것은 1)lynx라고 써주는 것과 2)php파일의 위치를 /usr/local/디렉토리/test.php와 같이 입력할 수 없다는 것입니다.

처음에 잘 몰라서 상대주소로도 입력해보고 폴더 명과 같이 절대 경로로도 입력해봤는데 다 소용이 없었습니다.

그래서 열심히 구글링을 한 결과 lynx를 붙여야 하고 도메인 + 파일 위치로 해야 한다는 것을 알았습니다.

참고로 숫자 5개 뒤에 lynx말고 다른 옵션도 붙일 수 있습니니다.

lynx는 텍스트 기반의 웹브라우저라고 합니다. 기본적으로 lynx가 설치되어 있지 않다면 lynx 대신에 /usr/bin/curl 을 이용하거나, /usr/bin/wget 을 사용하는 방법도 있습니다. 그냥 lynx 자리 대신에 채워 넣으시면 됩니다.

여기에서 lynx나 curl, wget을 사용하신다면 반드시 전체 url주소를 사용하셔야 된다는 점! 잊지 마세요~


Tip. 만약 url이 아니라 특정 경로에 있는 php파일을 실행시키고 싶으시다면 lynx대신 /usr/local/bin/php 를 넣으시고, url대신에 /home/donxu/DB/test.php 와 같이 입력해주시면 됩니다.

신고

'프로그래밍 > Linux' 카테고리의 다른 글

Cron을 이용해서 특정 시점에 작업 수행하기  (9) 2010.07.01
Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04
Posted by Code-Moon

댓글을 달아 주세요

  1. BlogIcon pooha302 2010.07.01 21:42 신고 Address Modify/Delete Reply

    아.. cron이 DB에 붙어있는 별도의 프로그램인지 알았는데
    그게 아니었군.. ㅎㅎ cron 말만 너무 들어봐서 ㅋㅋ
    좋은 정보 감솨

  2. 토들러 2010.08.26 13:36 신고 Address Modify/Delete Reply

    감사합니다.. 제 블로그에 좀 퍼갈께요...^^

    • BlogIcon Code-Moon 2010.08.29 13:54 신고 Address Modify/Delete

      블로그 주소를 남겨주시지..;;
      링크를 거시겠다는 뜻이라면 괜찮지만. 복사해서 붙여넣는 식의 퍼가시는 건 좀 별로인 것 같네요:)

  3. BlogIcon seojey 2010.08.27 11:10 신고 Address Modify/Delete Reply

    전 UNIX 서버 계열의 시스템 프로그래밍을 주로해서 cron을 자주 쓰고 있습니다만 php를 호출하는 것은 처음 봤네요 ^^. cron은 UNIX 계열의 거의 모든 OS에서 기본으로 제공하는 라이브러리 명령어입니다.
    적 같은 경우엔 '>'나 '>>' 을 이용해서 파일로 결과를 남기는 경우가 대부분입니다.
    근데 저 호스트는 리눅스 내부에서 구동중인 서버상의 URL인가요??

    • BlogIcon Code-Moon 2010.08.29 13:57 신고 Address Modify/Delete

      php파일의 경로를 말씀하시는 건가요?? 그렇다면 리눅스 서버 내에 있는 경로가 맞습니다^^
      문득 든 생각인데. 외부서버의 php파일도 수행이 가능할까요?;;ㅎ

  4. 지나가다가 2010.11.14 15:16 신고 Address Modify/Delete Reply

    cron으로루 php파일 잘 돌아갑니다. lynx같은거로 실행시키지 않아도 문제없이 작동되죠.

  5. 나그네 2011.01.20 14:04 신고 Address Modify/Delete Reply

    리눅스 크론에 대해 잘 몰라서 이리저리 알아보다가 잠시 궁금한 것이 있는데, 크론 주기 설정 부분에서 "분,시,일,월,년"이 아니라 "분,시,일,월,요일" 이 아닌가 해서요.
    확인 부탁드립니다.

    분 0-59
    시 0-23
    일 0-31
    월 1-12
    요일 0-7(0 또는 7=일요일, 1=월요일, ...)

티스토리 툴바