본문 바로가기
Linux

리눅스(Linux) 크론(Cron), 크론탭(crontab) 설치 방법, 사용 방법 - Ubuntu, CentOS

by 시바도지 2022. 12. 5.
반응형

 

크론이 뭔가요?


크론은 설정한 시간, 날짜, 간격에 따라 작업을 주기적으로 실행하는 스케줄러이다.

크론을 사용함으로 써 주기적으로 반복하던 일을 자동화 할 수 있다.

 

 

Cron 설치 방법


CentOS

# cron 설치
sudo yum update -y
sudo yum install -y cronie

# cron 시작
sudo systemctl start crond

# cron systemctl 활성화
sudo systemctl enable crond

# cron systemctl 등록 확인
sudo systemctl list-unit-files | grep crond

 

Ubuntu

# cron 설치
sudo apt update -y
sudo apt install -y cron

# cron 시작
sudo service cron start

# cron systemctl 활성화
sudo systemctl enable cron.service

# cron systemctl 등록 확인
sudo systemctl list-unit-files | grep cron
sudo service cron status

 

 

Cron 명령어


Linux 터미널에서 다음의 명령어를 사용하여 crontab을 사용할 수 있다.

crontab -e # 크론탭 설정

crontab -l # 어떤 내용이 들어있는지 확인(크론탭 리스트 확인)

crontab -r # 크론탭 지우기

service cron start # 크론탭 실행

 

 

Cron 설정


1. crontab -e 명령어로 구성 파일을 호출하여 크론탭을 설정한다.

 

2. 시간과 실행 명령어를 설정한다.

    문법은 다음과 같다.

 # ┌───────────── min (0 - 59)
 # │ ┌────────────── hour (0 - 23)
 # │ │ ┌─────────────── day of month (1 - 31)
 # │ │ │ ┌──────────────── month (1 - 12)
 # │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0)
 # │ │ │ │ │
 # │ │ │ │ │
 # * * * * *  command to execute

출처: https://ko.wikipedia.org/wiki/Cron

 

 

 

그림으로 쉽게 보자...

 

3. 크론 실행 및 수정 반영

 

크론을 실행한다.

service cron start

 

만약 이미 생성한 크론이 있다면 다음의 명령어를 사용한다.

# 우분투
service cron restart

# CentOS
service crond restart

 

예제


문제)

/home/script/test.sh 경로의 파일을 크론을 사용하여 해당 시간에 실행하려고 한다.

 

 

1. 매분마다 실행

# 매분 test.sh 실행
* * * * * /home/script/test.sh

 

2. 특정 시간 마다 실행

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

# 매일 1시(새벽) test.sh 실행
0 1 * * * /home/script/test.sh

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

 

3. 범위 실행

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

 

4. 간격을 두고 실행

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

 

5. 조금 복잡하게 실행

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

 

주기 입력 방법엔 * , - / 을 이용하는 방법이 있다. 위의 예제와 같이 각각의 특수기호가 하는 기능이 다르고 조합을 어떻게 하느냐에 설정할 수 있다.

 


1. 한 줄에는 하나의 명령어만 사용한다.

# 잘못된 예
* * * 5 5
/home/script/test.sh

# 잘된 예
* * * 5 5 /home/script/test.sh

 

2. 주석을 사용한다.

# ===============================
# 이렇게 주석을 사용할 수 있습니다.
# ===============================

 

3. Cron logging

크론을 사용하며, 다음과 같이 작업 내용을 로그로 남길 수 있다.

* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1

 

로그는 다음의 명령어를 사용하여 확인할 수 있다.

cat /var/log/cron

 

 

4. 크론 에디터를 사용한다.

 

시간 설정하는 것이 복잡하고 헷갈린다면 아래의 링크로 이동한다.

쉽고 간편하여 남녀노소 누구나 사용할 수 있다.


https://crontab.guru/

 

Crontab.guru - The cron schedule expression editor

 

crontab.guru

 

 

 

크론 사용 시 주의 사항


cron은 환경 변수를 가지지 않은 채로 실행된다고 한다. 그래서 환경 변수를 사용할 경우, 각 쉘 프로그램에서 따로 설정해주어야 한다.

 

만약 작성한 쉘 스크립트 파일을 수동으로 실행 시켰을 때는 잘 동작되지만 크론탭으로 실행 시켰을 때 정상적으로 동작하지 않았다면 환경 변수를 제대로 설정하였는지 확인해 본다.

추가로 환경변수는 터미널에서 echo $PATH 를 입력하면 확인할 수 있다.

 

 

필자는 이것 때문에 엄청나게 삽질 했다.

반응형

'Linux' 카테고리의 다른 글

쿠버네티스 mySQL pod dump  (0) 2022.09.01

댓글