앞에 만든 오라클 백업 스크립트를 자동으로 cron에 넣어주고,
매일 백업하게 해주는 cron를 작성하겠다.
오라클백업 스크립트 만들기
===========================================================================
퍼온거
crontab 명령어
crontab [ -u 사용자 id] 파일
crontab [-u 사용자 id] { -l | -r | -e}
- crontab -l : 예약된 작업리스트
- crontab -e : 예약된 작업 수정
- crontab -r : 예약된 작업 삭제
- crontab -u 사용자명 : 루트관리자는 해당 사용자의 crontab 파일을 보거나 삭제, 편집가능
등록 내용 설정
"분,시,일,월,요일,[사용자명] 실행명령" 순으로 설정
crontab 파일 형식
------ -------- ---------------------------------------------------
필 드 의 미 범 위
------ -------- ---------------------------------------------------
첫번째 분 0-59
두번째 시 0-23
세번째 일 0-31
네번째 월 1-12
다섯번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화,...)
여섯번째 사용자명 /etc/crontab, /etc/cron.d 에 저장될 경우 필요
일곱번째 작업명령 실행할 명령을 한줄로 쓴다.
------ -------- ---------------------------------------------------
예)
45,5 10 * * 1-5 root /usr/bin/rdate -s time.bora.net && clock -w
월요일~금요일에 매월 매일 10시 5분과 45분에 루트의 권한으로 시간동기화 명령어를 실행한다.
- * : 범위 내 모든 경우
- 숫자 : 정확히 일치하는 그 시각, 날짜
- '-' 기호로 연결된 두 숫자 : 두 숫자 사이에 포함된 범위를 뜻함
- 콤마(,)로 구분돼 나열된 숫자 : 나열된 숫자 중 일치하는 경우를 뜻함
출처: http://webdir.tistory.com/174 [WEBDIR]
============================================================================
퍼온거
$ crontab -e
그러면 뭔가 편집할 수 있는 곳이 로딩됩니다. 이곳이 바로 크론탭을 설정할 수 있는 장소이죠. 여기에 각종 크론탭 명령어를 입력후 콜론(:) 입력 후에 wq 를 입력해 크론탭을 갱신시킵시다.
반대로 현재 크론탭에 어떤 내용이 들어있는지 보려면 다음처럼 입력하세요.
$ crontab -l
그러면 cat 명령어로 파일을 읽어들인 것처럼 표준 출력으로 크론탭 내용이 나오게 됩니다. 그런데 만약(거의 없겠지만) 크론탭을 지우고 싶다면?
리눅스 쉘에 다음처럼 입력합니다.
$ crontab -d
이렇게까지 하면 크론탭의 기본 설정 및 확인, 삭제에 대해 배운 것입니다. 그러면 실제로 크론탭에 크론 하나를 예제로 등록 해봅시다.
주기 결정
* * * * * 분(0-59) 시간(0-23) 일(1-31) 월(1-12) 요일(0-7)
각 별 위치에 따라 주기를 다르게 설정 할 수 있습니다. 순서대로 분-시간-일-월-요일 순입니다. 그리고 괄호 안의 숫자 범위 내로 별 대신 입력 할 수 있습니다.
요일에서 0과 7은 일요일입니다. 1부터 월요일이고 6이 토요일입니다.
요일은 0부터 시작합니다.
1. 매분 실행
# 매분 test.sh 실행 * * * * * /home/script/test.sh
2. 특정 시간 실행
# 매주 금요일 오전 5시 45분에 test.sh 를 실행 45 5 * * 5 /home/script/test.sh
3. 반복 실행
# 매일 매시간 0분, 20분, 40분에 test.sh 를 실행 0,20,40 * * * * /home/script/test.sh
4. 범위 실행
# 매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행 0-30 1 * * * /home/script/test.sh
5. 간격 실행
# 매 10분마다 test.sh 를 실행 */10 * * * * /home/script/test.sh
6. 조금 복잡하게 실행
# 5일에서 6일까지 2시,3시,4시에 매 10분마다 test.sh 를 실행 */10 2,3,4 5-6 * * /home/script/test.sh
크론 로깅 (cron logging)
크론탭을 사용해서 정기적으로 작업을 처리하는 것은 좋은데, 해당 처리 내역에 대해 로그를 남기고 싶을 때가 있을겁니다. 그럴때 다음처럼 한번 써봅시다.
* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1
위처럼 작성하면 매분마다 test.sh.log 파일이 갱신 되어 작업 내용이 어떻게 처리 되었는지 알 수 있습니다. 만약 2>&1 을 제거하면 쉘스크립트에서 표준 출력 내용만 나옵니다. 2>&1은 이곳에서 확인합시다.
그런데, 이게 너무 자주 실행 되고 또한 지속적으로 로깅이 되야 해서 로그를 계속 남겨둬야 한다면 다음처럼 입력합니다.
* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1
그러면 계속 로그가 누적이 되는 것을 확인 할 수 있을겁니다. 대신 로그가 과도하게 쌓이면 리눅스 퍼포먼스에 영향을 주므로 가끔씩 비워주거나 파일을 새로 만들어주는 센스가 필요합니다.
반대로 로그는 필요 없는 크론을 위해선 다음처럼 입력합니다.
* * * * * /home/script/test.sh > /dev/null 2>&1
위에꺼는 퍼온겁니다.
펌: http://jdm.kr/blog/2
============================================================================
# 새벽 1시에 매일 실행시키기 0 1 * * * /bin/sh /home/oracle/backup/cron/db_backup.sh
위에처럼 하면 매일 실행 합니다.
'컴퓨터 > 리눅스 클라우드(AWS, GCP)' 카테고리의 다른 글
crontab Log 크론탭 로그 (0) | 2018.08.28 |
---|---|
날짜별로 파일 생성하기(한달전) (date 명령어) (0) | 2018.04.24 |
Nodejs 업그레이드 (0) | 2018.02.23 |
Nodejs 설치 (libv8.so.3 에러) (0) | 2018.02.22 |
Nginx 리버스 프록시(포트포워딩), nginx permission 에러 (0) | 2018.02.22 |