본문 바로가기

Programming

[CRONTAB] 리눅스 작업 스케쥴러에 작업 등록하기

안녕하세요 

마푸입니다. 


오늘은 리눅스 작업스케쥴러인 Cron에 대해서 말씀드리려합니다. 


  리눅스에서는 보통 C언어와 같은 고급언어나 간단하게 코딩할 수 있는 Script 언어로 만든 배치 작업을 걸어서 설정된 주기별로 해당 프로그램을 실행 할 수 있게 만들어주는 일종의 배치작업용 스케쥴러입니다. 


 물런, 이런 배치작업을 1초단위로 걸어서 시스템이나 다른 데몬을 감시해서 오류가 발생했을때 재시작 혹은 알림 서비스 등도 만들 수 있습니다. 즉, 배치작업만 거는건 아닌것이지요 


 저는 보통의 스크립트를 만들때 Python을 이용해서 제작합니다. Perl이나 Shell과 같은 스크립트 언어가 있지만 Python은 매우 쉽고 빠르게 코딩이 가능하기 때문에 선호하고 있습니다. 그리고 이미 만들어진 라이브러리나 API 같은게 많기 때문에 더 효율적입니다. 


 이렇게 만들어진 배치작업은 crontab을 통해서 작업 등록을 할 수 있는데요 


(* 주 : 아래는 리눅스 6.x 버전에서 사용하는 명령어 기반입니다.)


먼저 crontab에 작성된 스케쥴 파일을 수정해 봅시다. 

(* cron에 등록된 스케쥴을 확인하는 방법은 포스트의 마지막 부분에 있습니다.)


수정에는 두가지 방법이 있는데요 


첫번째는 

     edit 명령어를 이용한 수정방법입니다. 


1
crontab -e
cs

 


두번째 방법은

     cron 작업 스케쥴 파일을 직접 수정하는 방법입니다. 


1
vim /var/spool/cron/crontab/root 
cs


cron에 대한 실행에 대한 권한을 부여할 수 있으나, 우리는 작업 스케쥴을 걸고 이를 실행하는 목적을 기술 하기 때문에 과감히 생략하겠습니다. 


참고로 위의 cron 스케쥴 파일을 수정하는 것은 root만이 가능합니다. 


열어보면 앞부분에 '#' 으로 마킹되어진 부분은 주석입니다. 

경고나 사용하지 않은 작업이 블럭 처리 되어있으니 참고하셔도 됩니다. 


그럼 작업 스케쥴에 등록해보도록 합시다. 


먼저 크론의 구간은 크게 일정부분과 명령어부분으로 나뉠 수 있습니다. 




이런식으로 작성할 수 있습니다. 


적당히 작업을 추가하고 이제 구동한 로그를 확인해야겟지요?

로그는 아래의 위치에 있습니다. 


1
tail -n10 /var/log/syslog | grep CRON
cs


최근실행 한 시스템로그에서 cron에 대한것들만 보여줍니다. 

만약 작업이 매우많은 서버라면 n에서 지정하는 라인수를 좀 더 늘려보면서 확인이 가능합니다. 


  사실 crontab에 파일을 엑서스 할 수 권한이 없는 계정이거나 cat 명령어로 파일 경로를 찍기가 매우 귀찮습니다. 

일부 서비스에서는 유저별로 cron을 만드는 경우가 있기 때문에 자신이 등록한 cron을 보는 방법을 소개합니다.


1
crontab -l
cs


상기의 명령어를 이용하면 현재 명령어를 실행하는 계정이 등록한 cron 작업 스케쥴을 확인할 수 있습니다. 



크론을 등록하고 리스트도 확인했는데 실행이 되지 않는다면 cron 자체의 구동이 안되어있을 수 있습니다. 


아래의 명령으로 현재 cron이 동작하고 있는지 확인이 가능합니다. 


1
service cron status
cs


결과값이 cron start/running, process number


이라면 이미 구동 중인것이고 stop일 경우 crond를 아래의 명령어를 이용해서 실행 해 주면 됩니다. 


1
service cron start
cs


반응형

'Programming' 카테고리의 다른 글

[docker] docker 설치 (install)  (0) 2017.05.12
[docker] 도커에 대해서 알아보자  (0) 2017.05.12
[Linux] 쉘모드 전환에 대한 이해  (0) 2017.02.14
[MSSQL] Cursor 사용법  (0) 2017.02.14
[System] Raid에 대해서 알아보자  (0) 2017.02.14