티스토리 뷰
리눅스와 같은 유닉스 계열에서는 주기적으로 자동 배치 처리를 하기 위해서 쉘 스크립트와 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 등록
'프로그래밍 > 리눅스' 카테고리의 다른 글
SSH 세션을 계속 유지하기 위한 설정 (1) | 2014.02.11 |
---|---|
리눅스에서 at을 활용한 예약 작업 처리하기 (0) | 2014.01.19 |
리눅스에서 date 명령어 알아보기~ (0) | 2012.08.06 |
우분투에서 apt-get으로 JDK(Java Development Kit) 설치하기 (0) | 2012.07.20 |
리눅스에서 현재 접속하고 있는 사용자 수 확인하기 (0) | 2012.06.04 |