정보
-
업무명 : 쉘 스크립트 스케쥴링을 위한 크론탭 (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')"
-
스케쥴링 설정 예시
# 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 |
최근댓글