crontab 사용방법

작성자 이경미 수정일 2023-01-31 13:40

#crontab

들어가며

  • crontab 을 활용하여 서버에서 스케쥴 관리 및 원하는 작업을 예약할 수 있습니다. 



내용

crontab 은 특정한 작업을 리눅스 시스템 안에서 원하는 시간대 자동으로 수행되도록 스케쥴링하는 기능입니다. 

또한 주기적으로 수행되도록 작업을 예약할 수 있습니다. 


crontab 은 기본적으로 다음과 같은 기능을 제공합니다. 

# 현재 crontab 에 지정된 작업들의 목록
crontab -l
# crontab 추가/수정/삭제 등의 작업 공간
crontab -e 
# 모든 crontab 삭제
crontab -r


Crontab 작업

crontab 에 작업을 추가/수정/삭제 를 진행할 때에는 crontab -e 명령어를 사용합니다. 

crontab -e


명령어를 입력하면 vi 와 같이 작업할 수 있는 공간을 확인할 수 있습니다. 

이 때, 작업이 완료된다면 vim 과 같이 :wq 명령어를 이용하여 저장할 수 있습니다. 

다음은 crontab 규칙은 어떻게 되는지 알아보겠습니다. 


Crontab 규칙

crontab 은 주기적으로 작업을 수행하기 위해 작성하는 규칙이므로 추가하거나 수정할 때 crontab 의 파일 형식에 대한 지식이 있어야합니다. 

# .---------------- 분 (0 - 59)
# |  .------------- 시간 (0 - 23)
# |  |  .---------- 일 (1 - 31)
# |  |  |  .------- 월 (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- 요일 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

등록되는 규칙은 * * * * * 실행 명령 순으로 설정할 수 있습니다. 


그렇다면 *에 해당되는 규칙은 무엇일까요?

첫번째 * 에는 "분" 단위를 입력합니다. (0~59까지 입력이 가능합니다. )

번째 * 에는 "시간" 단위를 입력합니다. (0~24까지 입력이 가능합니다. )

번째 * 에는 "일" 단위를 입력합니다. (0~31까지 입력이 가능합니다. )

번째 * 에는 "요일" 단위를 입력합니다. (0~7까지 입력이 가능하며 0=일요일 부터 순차적입니다. )


또한 작업 스케쥴을 등록할 때에는 하나의 규칙은 한줄로 작성해야합니다. 


예시를 살펴보겠습니다. 

1. 매 분마다 /test.sh 을 실행합니다. 

* * * * * /test.sh


2. 목요일 정시마다 /test.sh 을 실행합니다. 

0 * * * 4 /test.sh

3. 매 월 10일마다 /test.sh 을 실행합니다. 

* 12 10 * * /test.sh


4. 매일 30분마다 /test.sh 을 실행합니다. 

*/30 * * * * /test.sh


Crontab 로깅 

작업 스케쥴을 등록할 때 해당 작업 수행시 로그를 기록할 수 있습니다. 

이는 완료된 작업 끝에 다음과 같이 작성합니다. 

* * * * * /test.sh > /log/test_log.log 

작업이 실행될 때 /log/test_log.log 에서 실행결과를 확인할 수 있습니다. 


표준 출력값과 표준 로그의 값을 확인하기 위해서는 다음을 추가합니다. 

* * * * * /test.sh > /log/test_log.log 2>&1

작업이 실행될 때, 새로운 log 가 새로운 파일에 생성되게 됩니다. 


이를 같은 파일에 적재하기 위해서는 다음과 같이 수정합니다. 

* * * * * /test.sh >> /log/test_log.log 2>&1

이는 하나의 test_log.log 파일에서 실행된 모든 결과값을 확인할 수 있도록 합니다. 


아티클이 유용했나요?

훌륭합니다!

피드백을 제공해 주셔서 감사합니다.

도움이 되지 못해 죄송합니다!

피드백을 제공해 주셔서 감사합니다.

아티클을 개선할 수 있는 방법을 알려주세요!

최소 하나의 이유를 선택하세요
CAPTCHA 확인이 필요합니다.

피드백 전송

소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.

02-558-8300