본문 바로가기

프로그래밍/Linux

Cron을 이용해서 특정 시점에 작업 수행하기

먼저 이 내용은 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' 카테고리의 다른 글

Vi에디터 단축 키  (0) 2010.01.04
리눅스 shell에서 mySQL의 instance가져오기  (0) 2010.01.04
Vi설정하기  (0) 2010.01.04