리눅스 Crontab 사용방법

한지승
HASHBOX
Published in
4 min readMar 15, 2019

리눅스 환경에서 일정 시간마다 반복된 작업을 스케쥴링을 해야하는 경우가 있습니다. 프로그래밍 내에서 sleep과 같은 함수를 써서 대기 후 사용하는 무식한 방법도 있지만, 그것 보다 더 좋은 방법은 바로 리눅스 자체의 crontab을 사용하는 방법이 있습니다. crontab을 사용하는 방법에 대해서 알아보도록 하겠습니다. 현재 저는 CentOS를 기반으로 글을 쓰고 있습니다.

Crontab 기본

기본적으로 리눅스에는 crontab이 설치 되어 있습니다.

$ crontab -e

crontab -e는 현재 crontab에 등록할 작업들을 편집하겠다라는 명령어 입니다. 해당 명령어를 입력하면 기본적으로 vim으로 crontab에 등록된 파일을 열어 주기 때문에 기존에 있던 스케쥴 내역에 추가로 스케쥴 할 내역을 추가하 실 수 있습니다. 처음 사용하시는 분들은 아무 내용이 없을 것입니다.

$ crontab -l

crontabb -l은 현재 등록된 스케쥴 내역들을 cat으로 쉘에 출력 되어집니다. 쉽게 등록된 내용이 무엇이 있는지 확인하기 위해서는 해당 명령어를 입력하면 쉽게 알아내실 수 있습니다.

$ crontab -r

crontab -r은 현재 등록된 모든 스케쥴 내역들을 리셋하는 명령어입니다. 기존에 등록된 스케쥴 내역들을 모두 지우고나서 새롭게 쓰고 싶은 경우에 입력하시면 쉽게 리셋하실 수 있습니다.

crontab -u <User>

crontab은 기본적으로 로그인한 유저의 권한으로 실행 되어집니다. 그렇기 떄문에 해당하는 유저의 권한으로 실행하기 위해서는 해당 유저로 변경해야합니다. 해당 명령어를 통해서 변경하시고 스케쥴을 등록하실 수 있습니다.

Crontab 포맷 형식

지금까지 crontab에 기본 사용법에 대해서 알아 보았는데요. crontab에 스케쥴링을 등록하기 위해서는 기본적인 형식이 있습니다. 형식에 대해서 알아보도록 하겠습니다.

기본적으로 crontab편집창에서는 한줄에 한 스케쥴을 등록하도록 되어있습니다. 즉, 3줄이 씌여져 있다면 3개의 스케쥴링이 명시한 포맷대로 스케쥴링 되고 있는 상태라 생각하시면 됩니다.

그럼 스케쥴 하나에 대한 포맷형식에 대해서 알아보도록 하겠습니다.

대부분의 crontab스케쥴들은 위와 같은 형식대로 작성이되어있습니다. 그럼 하나하나씩 확인해보도록 하겠습니다.

위와 같은 형태로 입력하시면 해당하는 명령어를 스케쥴대로 등록하실 수 있습니다. 분, 시간, 일, 월, 요일은 스페이스바를 기준으로 구분하기 때문에 사이사이는 스페이스로 띄워 주셔야합니다.

Crontab 예시

30 12 * * * /home/jshan/start.sh

위와 같은 경우에는 매일 12시 30분마다 /home/jshan/start.sh을 실행하라라는 의미입니다.

12 * 5 * * /home/jshan/start.sh

위와 같은 경우에는 매월 5일에는 매시간 12분이 될 때마다 /home/jshan/start.sh를 실행하라는 의미라 생각하시면 됩니다. 쉽게 이해가 되시나요?

다음은 조금 더 응용하는 방법에 대해서 알아 보도록 하겠습니다.

0 */3 * * * /home/jshan/start.sh

위와 같은 경우에는 0시를 기준으로 매 3시간 정각마다 /home/jshan/start.sh를 실행하라는 의미를 가지고 있습니다.

5,15,30 * * * * /home/jshan/start.sh

위와 같은 경우에는 매시간 5분, 15분, 30분이 될때마다 /home/jshan/start.sh를 실행하라는 의미입니다. 특정한 분마다 스케쥴링하고 싶으실때 사용하시면 되겠습니다.

5–30 * * * * /home/jshan/start.sh

위와 같은 경우에는 5, 6, 7, 8 …, 28, 29, 30분이 될때마다 /home/jshan/start.sh를 실행하라는 의미입니다. 특정한 구간에 연속으로 작업을 해야하는 경우이용하시면 되겠습니다.

마치며

특정 행동을 하는 프로그래밍을 해놓고 정기적으로 스케쥴링이 필요할 경우에 유용한 crontab에 대해서 알아보았습니다. 생각보다 자주 사용하는 명령어라 아시는 분들도 많을 수도 있지만 생각보다 모르시는 분들이 많아 글로 정리하게 되었습니다. 모두 유용하게 사용하실 수 있으셨으면 좋겠습니다!

--

--

한지승
HASHBOX
Editor for

딥러닝 분야에 모험가 — Machine Learning Engineer @ Clova, Naver Corp. — CV (https://hashbox.github.io)