본문 바로가기
[Linux]

[linux] crontab이란 무엇인가?

by SAMSUNG Metaverse-Cloud 2023. 1. 9.
728x90

 

Crontab이란 무엇인가?

crontab이란 리눅스에서는 일반적으로 crons 데몬이 주기적인 작업 실행을 처리한다.
cron이 시작될 때부터 끝날때까지 실행되며 cron 설정 파일은 cron table이라 하며 이를 줄여 crontab이라고 한다. 
윈도우의 스케줄러와 비슷한 역할을 한다고 생각하면 된다. 

 

Crontab 기본

 

먼저 crond 데몬 구동이 되고있는지 확인한다.

 

그 후 sudo 명령어를 사용해서 현재 cron 데몬이 실행중인 역시 확인해 준다. 

 

 

그 후 기본이 되는 crontab -e를 입력한다. 이는 크론탭을 이용해 작업을 할당할 때 사용하는 명령어이다. 

위 커맨드를 입력하면 vi 편집기와 비슷한 텍스트 편집기가 열린다. 만약 처음 시작하면 nano를 사용할 것인지 vi를 사용할 것인지 묻는다. 

 

나는 vi 편집기 형태로 시작했고 시작하면 vi 편집기의 형태를 띈다.

 

 

crontab의 작성법은 위와 같다.

이 명령어는 매일 12시12분이 되면 hello를 출력하라고 하는 것이다. 

왼쪽의 ******은 주기라고 할 수 있다. 

 

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

별의 위치에 따라 주기를 다르게 선택할 수 있다. 

 

 

주기별 예제

우리는 위에서 주기를 살펴보았다. 이런 주기들을 활용해서 실행할 수 있다. 

 

* * * * * echo "hello"

위 명령어는 매 분 hello를 출력하라고 하는 명령이다. 

 

45 5 * * 5 echo "hello"

위의 명령은 특정한 시간 즉 매주 금요일 오전 5시 45분에 hello를 출력하라고 하는 것이다. 

 

0,20,40 * * * * echo "hello"

위의 명령은 반복적인 실행으로 매일 매 시간 0, 20, 40분마다 hello를 출력하라고 하는 것이다. 

 

0-30 1 * * * echo "hello"

위 명령어는 범위 실행으로 매일 1시부터 1시 30분까지 매분 hello를 출력하라고 하는 명령이다. 

 

*/10 * * * * echo "hello"

이는 간격실행으로 매 10분마다 hello를 출력하라고 하는 것이다. 

 

*/10 2,3,4 5-6 * * echo "hello"

이는 5~6일까지 2,3,4시에 매 10분마다 hello를 찍으라는 명령이다.

 

이렇듯 - , * 이 세가지 기호를 통해서 시기의 조절이 가능하다. 

  • * : 범위 내 모든 경우
  • 숫자: 정확히 일치하는 그 시각, 날짜
  • - : 기호로 연결된 두 숫자 : 두 숫자 사위에 포함된 범위
  • , : 나열된 숫자중 일치하는 경우를 뜻한다. 

 

위는 가벼운 명령어였지만 쉘 스크립트를 통해서 원하는 주기에 맞는 명령을 시현할 수 있다. 

 

 

이렇게 작성한 후 저장해보았다. 

 

 

 

그 후 crontab -l이라는 crontab의 리스트를 보여주는 명령어를 보면 내가 작성한 명령을 볼 수 있다. 

이렇듯 crontab을 사용해서 다양하게 주기를 주며 배치파일이나 쉘 스크립트를 실행할 수 있다. 

 

 

 

 

출처

https://jdm.kr/blog/2

 

리눅스 크론탭(Linux Crontab) 사용법 :: JDM's Blog

* 이 포스팅은 네이버 블로그에서 작성(2013.04.01)한 내용을 옮겨온 것입니다. 오늘은 리눅스 크론탭에 대해 알아볼까 합니다. 음, 윈도우에서는 스케줄러와 비슷하다고 보면 되겠네요. "특정 시간

jdm.kr

 

728x90