정보
-
업무명 : 쉘 스크립트 스케쥴링을 위한 크론탭 (crontab) 설정
-
작성자 : 이상호
-
작성일 : 2021-01-17
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 기상 연구 및 웹 개발을 담당하고 있는 해솔입니다.
-
오늘 포스팅에서는 스케쥴링을 위한 크론탭 (crontab) 설정을 소개합니다.
[특징]
-
리눅스에서 스케쥴링을 위해서 쉘 스크립트 기술이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어
[기능]
-
크론탭 설정
-
크론탭 서비스 재시작
-
로그 확인
[활용 자료]
- 없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
소스 코드 참조
[사용 OS]
-
Linux (CentOS v7.3)
-
VMware Workstation Pro v15.5
[사용 언어]
-
ShellScript (bash)
소스 코드
-
소스 코드는 단계별로 수행하며 상세 설명은 다음과 같습니다.
-
작업 환경의 경우 수행 쉘, 입력 자료, 출력 자료로 구성되어 있습니다.
디렉터리명 | 파일명 | |
작업 경로 | prjDir=/SYSTEMS/PROG/ShellScript |
|
수행 쉘 | ${prjDir} | Test-Cron.sh |
출력 자료 | ${prjDir} | List |
[명세]
-
[1 단계] 수행 쉘 실행 및 파일 조회
-
bash Test-Cron.sh "$(date +'%Y-%m-%d %H:%M')" 명령어를 통해 쉘 실행
- List 목록 결과 확인
-
#!/bin/bash
echo $1 $2 $3 >> /SYSTEMS/PROG/ShellScript/List
-
[2 단계] 크론탭 (crontab) 설정
-
crontab -e 명령어를 통해 스케쥴링 등록/수정
-
좌측에서 [분] [시간] [일] [월] [요일] 수행 명령어 입력 파라미터로 입력
-
분 : 0-59까지의 숫자
-
시간 : 0-23까지의 숫자
-
일 : 1-31까지의 숫자
-
월 : 1-12까지의 숫자
-
요일 : 숫자로서 0과 7은 일요일, 1부터 차례대로 월, 화, 수, 목, 금, 토요일
-
수행 명령어 : 전체 경로를 지정 (추천)
-
-
# crontab -l
0 0 * * * rdate -s time.bora.net
0 0 * * * bash /SYSTEMS/PROG/ShellScript/RunShell-URL-API.sh "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days ago')" "$(date +'\%Y-\%m-\%d \%H:\%M')"
* * * * * bash /SYSTEMS/PROG/ShellScript/Test-Cron.sh "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days ago')" "$(date +'\%Y-\%m-\%d \%H:\%M')" "$(date +'\%Y-\%m-\%d \%H:\%M' -d '1 days')"
Crontab.guru - The cron schedule expression editor
loading... Cron job failures can be disastrous! We created Cronitor because cron itself can't alert you if your jobs fail or never start. Cronitor is easy to integrate and provides you with instant alerts when things go wrong. Learn more about cron job mon
crontab.guru
-
스케쥴링 설정 예시
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
# 23:43에 실행
43 23 * * *
# 05:12에 실행
12 05 * * *
# 17:00에 실행
0 17 * * *
# 매주 월요일 17:00에 실행
0 17 * * 1
# 0,2,3 매주 일, 화, 수요일 17:00 17:10에 실행
0,10 17 * *
# 매월 1 일 17:00부터 17:10까지 1 분마다 실행
0-10 17 1 * *
# 1 매월 1 일과 15 일 및 월요일 0:00에 실행
0 0 1,15 *
# 매월 1 일 4:42 분에 실행
42 4 1 * *
# 월요일부터 토요일까지 21:00에 실행
0 21 * * 1-6
# 10 분마다 실행
0,10,20,30,40,50 * * * *
# 10분마다 실행
*/10 * * * *
1:00에서 1:59까지 1 분 간격으로 실행
* 1 * * *
# 1:00에 실행
0 1 * * *
# 매시 0 분에 1 시간 간격으로 실행
0 */1 * * *
# 매시 0 분에 1 시간 간격으로 실행
0 * * * *
# 8:02, 11:02, 14:02, 17:02, 20:02에 실행
2 8-20/3 * * *
# 1일과 15일 5:30에 실행
30 5 1,15 *
-
[3 단계] 크론탭 서비스 재시작
-
systemctl 명령어를 통해 서비스 상태 확인 및 재시작
-
# 상태 확인
systemctl status crond.service
# 재시작
systemctl restart crond.service
-
[4 단계] 로그 확인
-
tail 명령어를 통해 크론탭 확인
-
tail -f /var/log/cron
-
[5 단계] 수행 결과 확인
-
tail 명령어를 통해 목록 확인
-
tail -f List
[전체]
-
Test-Cron.sh
#!/bin/bash
echo $1 $2 $3 >> /SYSTEMS/PROG/ShellScript/List
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
'프로그래밍 언어 > Shell Script' 카테고리의 다른 글
[ShellScript] 쉘 스크립트 국/영문 번역 파일을 이용하여 이미지 및 동영상 제작 (0) | 2021.01.07 |
---|---|
[ShellScript] 쉘 스크립트 날짜 기간에 대한 파일 조회 및 일별 통계 생산 (0) | 2021.01.06 |
[ShellScript] 쉘 스크립트 UTC 시간에 대한 파일을 이용한 KST 시간 변환 (0) | 2021.01.03 |
[ShellScript] 쉘 스크립트 사용법 (배열을 사용하는 법) (1) | 2020.07.18 |
[ShellScript] 쉘 스크립트 사용법 (변수를 사용하는 법) (2) | 2020.07.17 |
최근댓글