Linux Crontab(리눅스 크론탭) 사용법

솔루션 구매 및 의뢰 문의
010-7262-9288
mrkjm@nate.com
JS/Jquery/Ajax 팁

Linux Crontab(리눅스 크론탭) 사용법

머니버그 0 1305

crontab은 주기적으로 특정 작업을 실행해야 하는 경우에 유용하게 쓰입니다.


윈도우 운영체제 에서의 스케줄러와 같은 역할을 합니다.

1. crontab 은 어떤 경우에 사용하나요?

ex)

매일 자정에 오래된 로그 파일을 삭제해야할 때

1시간 간격으로 서버의 디스크 사용량을 운영자에게 메일로 보내야할 때

매주 월요일에 특정 디렉토리를 백업하고 싶을 때


2. crontab 설정 방법

주기적으로 작업을 수행하기 위한 설정 파일을 crontab이라고 합니다.

crontab 파일의 위치는 OS별로 차이가 있기 때문에 파일을 직접 수정하지 않고 crontab 명령어를 이용해서 추가/변경/삭제를 합니다.

 

① crontab 편집

$ crontab -e

위와 같이 입력하면 crontab 명령어 입력을 위한 텍스트 에디터가 실행됩니다.

에디터에 crontab 명령어를 입력후 콜론(:) 입력 후에 wq 를 입력해 crontab을 갱신합니다.

 

② crontab 목록 조회

$ crontab -l

cat 명령어로 파일을 읽어들인 것처럼 표준 출력으로 현재 등록된 crontab 목록이 콘솔에 출력됩니다.

 

③ crontab 삭제

$ crontab -r

crontab -e을 통해 편집해도 되지만, 현재 사용자의 모든 crontab을 삭제하고 싶다면 위의 명령어를 사용하면 됩니다.


3. crontab 주기 설정

*      *      *      *      *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

각 별 위치에 따라 주기를 다르게 설정 할 수 있습니다. 순서대로 분-시간-일-월-요일 순입니다.

그리고 괄호 안의 숫자 범위 내로 별 대신 입력 할 수 있습니다.

요일의 경우 0 일요일, 1 월요일, 2 화요일, 3 수요일, 4 목요일, 5 금요일, 6 토요일, 7 일요일입니다.


4. crontab 예제

쉘에서 "crontab -e"를 통해 편집기가 열려있는 상태인 것으로 가정합니다.

crontab을 설정할 때 한 줄에 하나의 명령만 쓸 수 있습니다. (줄바꿈 문자가 들어가면 안됩니다.)

 

① 매 1분마다 실행

# 매 1분마다 test.sh 실행
* * * * * /root/script/test.sh

 

② 매 30분마다 실행

# 매 30분마다 test.sh 실행
*/30 * * * * /root/script/test.sh

 

③ 매일 새벽 2시에 실행

# 매일 새벽 2시에 test.sh 실행
0 2 * * * /root/script/test.sh

 

④ 매주 월요일~금요일 오전 6시에 실행

# 매주 월요일~금요일 오전 6시에 실행 test.sh 실행
0 6 * * 1-5 /root/script/test.sh

 

⑤ 매 30분마다 작업 결과를 파일에 로깅

# 매 30분마다 test.sh 실행 결과를 log.txt에 로깅
*/30 * * * * /root/script/test.sh >> log.txt

 

⑥ 특정시간 실행

# 매주 금요일 오전 5시 45분에 test.sh 를 실행
45 5 * * 5 /root/script/test.sh

 

⑦ 반복 실행

# 매일 매시간 0분, 20분, 40분에 test.sh 를 실행
0,20,40 * * * * /root/script/test.sh

 

⑧ 범위 실행

# 매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행
0-30 1 * * * /root/script/test.sh

 

⑨ 간격 실행

# 매 10분마다 test.sh 를 실행
*/10 * * * * /root/script/test.sh

 

⑩ 복잡하게 실행

# 5일에서 6일까지 2시,3시,4시에 매 10분마다 test.sh 를 실행
*/10 2,3,4 5-6 * * /root/script/test.sh

주기 입력 방법엔 *, -, / 을 이용하는 방법이 있습니다.

위에서 보셨듯이 각각의 특수기호가 하는 기능이 다르고 조합을 어떻게 하느냐에 따라 필요한 주기를 설정 할 수 있습니다.


4. crontab 사용 팁

① 한 줄에 하나의 명령만 씁니다.

# 잘못된 예
* * * * *
/root/script/test.sh

# 잘된 예
* * * * * /root/script/test.sh

 

② 주석을 달아 봅시다.

# 주석
#---------------------------------------------------------------------------------------------------------------------------------------
# 맨 앞에 #을 입력하면 그 뒤로 나오는 모든 문자는 주석으로 처리 할 수 있습니다.
#---------------------------------------------------------------------------------------------------------------------------------------

 

③ 로그(log)을 꼭 남겨 둡니다.

# 예
*/20 * * * *
/root/script/test.sh >> /var/log/test_status.log 2>&1
* * 1 * * rm -rf /var/log/test_status.log 2>&1

로그(log)가 많이 쌓이면, 서버 내의 저장공간이 부족하게 되어 서버의 다운 또는 비정상적인 동작을 보일 수 있으니 주기적으로 삭제해야 합니다.

 

④ 작성한 crontab을 백업합니다.

혹시라도 crontab -r을 쓰거나 실수로 crontab 디렉토리를 삭제하게 된다면 기존 cron(크론) 내역들이 모두 삭제됩니다.

이런 혹시나 하는 경우를 대비해서 주기적으로 crontab을 백업해 둡니다.

crontab -l > /home/bak/crontab_bak.txt

이렇게 쉘 상에서 치시게 되면 crontab의 내역을 txt파일로 저장하게 됩니다.

# 밤 12시 0분에 자동으로 crontab 백업 실행
0 0 * * * crontab -l > /home/bak/crontab_bak.txt

위 처럼 crontab에 추가 해 두면 자동으로 crontab 백업 실행하게 됩니다.

 

, , , , , ,

0 Comments
제목