크론이 뭔가요?
크론은 설정한 시간, 날짜, 간격에 따라 작업을 주기적으로 실행하는 스케줄러이다.
크론을 사용함으로 써 주기적으로 반복하던 일을 자동화 할 수 있다.
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. 크론 에디터를 사용한다.
시간 설정하는 것이 복잡하고 헷갈린다면 아래의 링크로 이동한다.
쉽고 간편하여 남녀노소 누구나 사용할 수 있다.
Crontab.guru - The cron schedule expression editor
crontab.guru
크론 사용 시 주의 사항
cron은 환경 변수를 가지지 않은 채로 실행된다고 한다. 그래서 환경 변수를 사용할 경우, 각 쉘 프로그램에서 따로 설정해주어야 한다.
만약 작성한 쉘 스크립트 파일을 수동으로 실행 시켰을 때는 잘 동작되지만 크론탭으로 실행 시켰을 때 정상적으로 동작하지 않았다면 환경 변수를 제대로 설정하였는지 확인해 본다.
추가로 환경변수는 터미널에서 echo $PATH 를 입력하면 확인할 수 있다.
필자는 이것 때문에 엄청나게 삽질 했다.
'Linux' 카테고리의 다른 글
쿠버네티스 mySQL pod dump (0) | 2022.09.01 |
---|
댓글