프로그래밍/서버

[CRON]crontab 으로 스케줄링하기

guitarhero 2018. 3. 21. 10:20
728x90

서버에서 일정한 기간에 반복적으로 실행해야하는 경우가 있다. 

주기적으로 크롤링을 해온다거나 주기적으로 쉘을 실행 시킨다거나 

이런 주기적인 작업들은 수작업을 통해서 하기보다는 프로그램에 위임하는것이 편리하다.


그래서 서버에는 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 서비스를 재시작해주자


    현재 날씨 정보를 일정한 시간마다 크롤링 하는 것을 설정할 때 사용해 보았는데 해당 부분에서 알게되는 정보가 있다면 추가 수정하도록 하겠스습니다.

    728x90