본문 바로가기
OS/Linux

[Linux] Crontab으로 원하는 시간에 자동으로 작업 실행하기

by llHoYall 2021. 4. 12.

Unix, Linux 계열 OS에서는 crontab을 사용하여 원하는 작업을 자동으로 실행할 수 있습니다.

Unix 계열인 MacOSX에서도 당연히 사용할 수 있죠.

 

예를 들면, 매일 아침 8시에 뉴스 기사를 스크랩 해오는 프로그램을 자동으로 실행할 수도 있겠고, 매일 아침 8시 30분에 주식 자동 매매 프로그램을 실행시킬 수도 있겠죠. ㅎㅎㅎ

 

사용법도 매우 간단하니 배워서 바로 적용해보세요. ^^

기본 명령어

다음 명령어를 사용하여 crontab을 실행합니다.

$ crontab -e

기존에 만들어진 crontab이 있다면 해당 파일이 열릴 것이고, 없었다면 새로운 파일이 열릴 것입니다.

crontab을 사용할 수 있는 문법은 잠시후에 설명 드릴게요~

 

파일을 열지 않고 내용을 보고 싶다면 다음 명령어를 사용하면 됩니다.

$ crontab -l

 

다음으로, crontab을 삭제하고 싶다면 다음 명령어를 사용하면 됩니다.

$ crontab -r

Crontab 문법

#으로 시작하는 줄은 주석으로 처리됩니다. 원하는 설명 등을 적어 놓을 때 사용하세요.

 

* * * * * command

모든 명령은 한 줄로 작성해야합니다. 이것을 지키지 않으면 실행되지 않습니다.

명령은 2 부분으로 나뉩니다. 언제 실행되야 하는지를 적어놓는 앞부분과 어떤 명령을 실행해야 하는지를 적어놓는 뒷부분입니다.

 

뒷부분이야 원하는 명령어를 써 넣으면 되니까 앞부분을 좀 더 자세히 살펴보겠습니다.

공백 문자로 구분이 되는 5가지 영역이 보이시죠?

분 시 일 월 요일

각각의 자리는 순서대로 위와 같은 의미를 갖고 있습니다.

 

*을 입력하면 매~를 의미합니다. 즉, 매분 매시 매일 매월과 같은 식이죠.

 

숫자를 의미하면 각 숫자에 해당하는 시간에 실행됩니다.

분(0~59)
시(0~23)
일(1~31)
월(1~12)
요일(0, 7: 일 1: 월, 2: 화, 3: 수, 4: 목, 5: 금, 6: 토)

각 숫자의 의미는 위와 같아요. 바로 이해 되시죠?

요일에는 SUN, MON, TUE, WED, THU, FRI, SAT를 사용해도 됩니다.

예를 들어, 30 * * * * 은 매 시 30분마다 실행이 됩니다.

다시 말하면 1시 30분, 2시 30분, 3시 30분..... 요런 의미에요. 30분마다 실행된다는 것이 아니니 헷갈리지 마세요~!!

 

-를 사용하여  범위로 지정할 수도 있습니다.

역시 예를 드는 편이 이해가 쉽겠죠?

5 1-3 * * * 은 매일 1시 5분, 2시 5분, 3시 5분에 실행하라는 의미입니다.

 

,를 사용하면 원하는 값들을 나열할 수 있습니다.

다시 말해, 10,30,50 * * * * 은 매시 10분, 30분, 50분에 실행하라는 의미죠.

 

/는 값 증가 표현입니다.

예를 들어, 30/15 * * * * 이라고 하면 매 시 30분부터 15분마다 실행하라는 의미입니다.

 

?는 일과 요일에만 사용할 수 있고, 설정하지 않는다는 의미입니다.

 

L도 일과 요일에만 사용할 수 있고, Last(마지막)의 의미입니다.

즉, 일의 위치에 쓰면 매월 마지막날을 의미합니다.

요일에 사용할 경우에는 해당 요일을 같이 입력해주면 됩니다.

* * * * 4L 의 경우 매월 마지막 목요일이란 의미죠.

 

W의 경우 일의 위치에만 사용할 수 있는데, weekday(평일)의 의미입니다.

쉽게 이해를 하려면 자동 이체일 혹은 월급날을 생각하시면 되요.

주말은 은행이 영업을 안하니까 평일에만 영업을 하죠? ㅎㅎ

그러므로, * * 25W * * 은 매월 25일과 가장 가까운 평일에 실행하라는 얘기죠.

 

#은 요일에만 사용할 수 있으며, 다음의 의미가 있습니다.

* * * * 3#2 은 매월 2번째 수요일에 실행하라는 의미죠.

 

요정도만 아시면 아마 문제없이 사용하실 수 있을 것 같아요. ^^

'OS > Linux' 카테고리의 다른 글

[Linux] Install Python using Source  (0) 2022.02.02

댓글