[CRON]crontab 으로 스케줄링하기
서버에서 일정한 기간에 반복적으로 실행해야하는 경우가 있다.
주기적으로 크롤링을 해온다거나 주기적으로 쉘을 실행 시킨다거나
이런 주기적인 작업들은 수작업을 통해서 하기보다는 프로그램에 위임하는것이 편리하다.
그래서 서버에는 cron이라는 기능이 있는데 오늘은 그 사용법에 대해서 알아보려 한다.
CentOS 6.4에서는 RHEL6 버전부터 사용된 anacron이 채용되었다고 한다. 이로인해 RHEL5와는 달라졌다.
자세한 사항은 anacron 참고하시면 되겠다.
주로 설정할때 사용하는 crontab은 cron table의 줄임말이다.
crontab 명령어
crontab -l : 해당 계정의 예약된 작업리스트를 보여준다.
crontab -e : 해당 계정의 예약된 작업을 수정할 수 있다.
crontab -r : 예약된 작업 삭제를 할 수 있다.
crontab -u 사용자명 : root관리자는 해당 사용자의 crontab 파일을 보거나 삭제, 편집 가능하다.
cat /var/log/cron : crontab 실행 로그를 활용할 수 있다.
cat /var/spool/cron/root 예약된 작업을 확인 할 수 있다.
crontab 작성 방법
5자리의 시간설정 [계정(사용자)] 작업명령의 순으로 작성하면 된다.
첫번째 분 0-59
두번째 시 0-23
세번째 일 0-31
네번째 월 1-12
다섯번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯번째 사용자명 /etc/crontab, /etc/cron.d 에 저장될 경우 필요
일곱번째 작업명령 실행할 명령을 한줄로 쓴다.
출처: http://webdir.tistory.com/174 [WEBDIR]
40 * * * * sh /web/weather/cron.sh 2> /web/weather/error.log
매40분(1시간단위)에 실행되는 cron을 설정해보았다.
주의 할 점은 cron을 설정할때 무조건 절대 경로로 설정해야 한다는 것이다.
그리고 실행파일을 설정할때는 shell 파일을 만들어서 shell파일을 호출하도록 하는것이 좋다(안그럼 실행이 안될 수 도 있다.)
뒤에 2> /web/weather/error.log 는 에러 발생시 해당부분으로 로그를 남기라는 부분이다.
그리고 마지막으로 중요한 것은 서비스를 재시작 해줘야 한다는 것이다.
service crond restart
cron 서비스를 재시작해주자
현재 날씨 정보를 일정한 시간마다 크롤링 하는 것을 설정할 때 사용해 보았는데 해당 부분에서 알게되는 정보가 있다면 추가 수정하도록 하겠스습니다.