티스토리 뷰

리눅스와 같은 유닉스 계열에서는 주기적으로 자동 배치 처리를 하기 위해서 쉘 스크립트와 crontab을 사용합니다.

즉, 쉘 프로그램을 crontab에 등록된 시간에 자동으로 실행하도록 하는 것으로 서버 로그 정리, 통계/정산 등 배치 작업에 많이 사용하고 있습니다. 


그럼 crontab에 등록하고 사용하는 방법에 대해서 한번 살펴보도록 하지요. 

먼저 crontab의 도움말은 다음 그림과 같습니다. 

생각보다 많은 옵션이 존재하지 않습니다. -l 이나 -e 정도의 옵션을 알고 시간 설정하는 방법을 이해하면 될 것 같습니다. 



crontab 리스트 확인하기

현재 서버에서 동작하고 있는 crontab을 확인하기 위해서는  -l 옵션을 사용합니다. 


> crontab -l
30 0 * * * /usr/local/mini.sh


crontab을 이해하기 위해서는 앞부분에 나오는 5자리의 값들을 알고 있어야 합니다. 

첫번째 인수: 0 ~ 59까지의 분 (minute)

두번째 인수: 0 ~ 23까지의 시간 (hour)

세번째 인수: 1 ~ 31까지의 날짜 (day of month)

네번째 인수: 1 ~ 12까지의 월 (month)

다섯번째 인수: 0 ~ 6까지의 요일 (day of week, 0-일요일)


*로 표시를 할 경우 매번의 의미를 갖습니다. 즉 세번째 인수가 *이면 매일이 되겠죠.. 

그렇다면 위 내용은 매일 새벽 0시 30분에 /usr/local/mini.sh를 실행하라는 명령어에 해당하는 것입니다. 


crontab 등록하기 

crontab에 등록하기 위해서는 다음과 같이 -e 옵션을 사용하면 됩니다. 

처음 실행할 경우, 원하는 에디터를 설정하는 화면이 나타납니다. 일반적으로 vi를 주로 사용하겠죠. 

이후에는 해당 에디터가 바로 나타나서 편집할 수 있게 됩니다. 


> crontab -e


그럼 몇가지 crontab 예를 한번 들어보도록 하죠.. 

모두 지정된 /usr/local/mini.sh를 실행하는 것으로 하겠습니다. 


0 3 * * * /usr/local/mini.sh        // 매일 새벽 3시에 실행

0 0 10 * * /usr/local/mini.sh     // 매월 10일 0시에 실행

0 5 * * 1 /usr/local/mini.sh         // 매주 월요일 5시에 실행

0 5 * * 0,3  /usr/local/mini.sh     // 매주 일요일, 수요일 5시에 실행

0-59/1 * * * * /usr/local/mini.sh   // 매분마다 실행, 0-59분 동안 매 1분마다 실행 의미

* * * * * /usr/local/mini.sh     // 매분마다 실행행


crontab 실행하기

우분투를 기준으로 crontab 실행을 정리해 보도록 하죠. 

먼저 crontab이 실행되어 있는지 확인해야 겠지요. 


> ps -ef | grep cron


만약 시작이 안되어 있다면 다음과 같이 시작할 수 있습니다. 


> /etc/init.d/crond start


재시작이나 중지 명령어는 당연해 restart / stop이겠죠.. ^^


> /etc/init.d/crond restart
> /etc/init.d/crond stop


cron이 잘 진행되고 있는지 로그를 확인하려면 다음과 같이 하세요. 


> tail -100f /var/log/cron


마지막으로 사용자에게 crontab 명령어를 허가 하거나 제한하려면 다음 파일들에 추가하면 된다고 합니다. 

/etc/cron.allow         // 허가할 사용자 ID 등록

/etc/cron.deny         // 제한할 사용자 ID 등록



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함