티스토리 뷰
리눅스 구버전시 사용
cd /etc
vi crontab 수정후
service crond restart
---------------------------
root권한으로
crontab -e 등록&수정
crontab -l 확인
vi /var/log/cron 크론로그 확인
#!/bin/sh
#날짜 디렉토리 찾기
Year=`date +"%Y"`
Mon=`date +"%m"`
Day=`date +"%d"`
# 로그파일들을 당일분만 남겨놓고 나머지는 삭제한다.
#/usr/bin/find /data2/namha/ems51/auto/tmp/$Year/$Mon/. -name '??' -mtime +1 -exec /bin/rm -rf {} \;
#/usr/bin/find /data2/namha/ems51/auto/$Year/$Mon/. -name '??' -cmin +720 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/tmp/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/log/ -name 'send_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/log_process/ -name 'back_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/auto/trace/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/log/ -name 'send_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/log_process/ -name 'back_*' -mtime +30 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/jupiter/trace/$Year/$Mon/. -name '??' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_mass/agent_log/ -name 'db_*' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_mass/trace/ -name 'send_*' -mtime +14 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_auto/agent_log/ -name '??' -mtime +7 -exec /bin/rm -rf {} \;
/usr/bin/find /data2/namha/ems51/sms_auto/trace/ -name '??' -mtime +14 -exec /bin/rm -rf {} \;
fine : 파일을 찾는다
/export/home/tester : /export/home/tester 디렉토리 이하에서 찾는다.
-mtime +30 : 파일 변경된 날짜가 30일 이상인 파일을 찾는다
-print : 파일을 찾아서 화면에 보여준다.
-exec : -print에 의해 출력되는 파일을 뒤에 오는 명령어의 인수로 입력된다.
rm -f : -exec에 의해 받은 인수파일을 삭제한다.
{} \; - exec끝을 의미한다.
전체적인 의미는 /export/home/tester 디렉토리에서 파일내용이 변경된지 30일이 지난 파일을 찾아서 삭제하는 명령입니다.
위 명령어를 crontab에 등록 시킨후 매일 한번씩 실행 시키면 될것 같습니다.
보다 자세한 내용은 man find를 이용해 보세요
일정 주기로 처리하는 배치 프로세스의 경우 시스템 crontab에 등록 하여 자동화 시킬 수 있다.
(형식)
분 시 날짜 달 요일 하고싶은일( 쉘 스크립트로 만들어 두어도 됩니다.)
0-59 0-23 1-31 1-12 0-7
( 0,7 : 일요일, 1: 월 2: 화 ... sun, mon 사용가능 )
(예제)
15 06 * * * do_daily.sh ; 매일 6시 15분에 do_daily 스크립트 실행
00 03 * * 7 do_weekly.sh ; 매주 일요일 3시00 에 do_monthly 스크립트 실행
10 04 1 * * do_monthly.sh : 매월 1일 4시 10분에 do_monthly 스크립트 실행
======== 아래것은 ========
* crontab 명령
-e: 등록된 crontab을 편집한다.
-l: 등록된 crontab명령을 출력한다.
-r: 등록된 crontab을 삭제한다.
* crontab 편집
위 명령을 입력하면 vi 환경에서 crontab 편집이 된다
0 6 1 3 * /home/batch/script/logdel.sh
0 0 * * * /home/batch/script/daybatch.sh
30 * * * * /home/batch/script/hourbatch.sh
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /home/batch/script/checksys.sh
위 내용은 vi 환경에서 crontab 샘플이다.
구분자는 공백으로 앞에서 부터 분(0~59), 시(0~23), 일(1~31), 월(1~12), 주(1:월~7:일), 실행명령을 의미한다. ","(컴마)를 구분자로 복수 시간을 지정할 수 있다.
backup.sh는 매주 일요일 13:20에 기상시간을 알리며 실행된다.
logdel.sh는 매년 3월 1일 06:00에 삼일절을 기념으로 실행된다.
daybatch.sh는 매일 00시 00분에 퇴근시간을 알리며 실행된다.
hourbatch.sh는 매시간 30분에 실행된다.
checksys.sh는 5분마다 실행된다.
* crontab 사용시 주의 사항
계정을 정해주지 않으면 root권한으로 실행된다.
crontab에 아래의 프로세스가 등록되어 있다고 가정하자.
run_hourbatch는 오라클을 연동하는 Pro-C로 만들어져 있다고 가정하자.
이 프로세스는 1시간 간격으로 수행되는 배치 프로세스이다.
하지만, 이렇게 프로세스를 직접 실행을 하면 수행에 실패한다.
이는 crontab에 등록된 프로세스가 root권한으로 실행되면서 오라클 환경변수를 읽는데 실패했기 때문에 발생하는 것이다.
참조 - http://newtype.tistory.com/tag/crontab
'Linux' 카테고리의 다른 글
find grep 파일명 찾기 (0) | 2010.01.05 |
---|---|
[Linux] 계정,그룹만들기 (0) | 2009.10.05 |
rm시 물어볼때 (0) | 2009.06.25 |
log안 특정문자만 추려 파일로 떨궈내기 (0) | 2009.01.07 |
파일 읽기, 쓰기 권한있는지 확인 (1) | 2008.09.11 |
- Total
- Today
- Yesterday
- 백업
- server
- 파일
- 데이터
- 설정
- delete
- table
- Oracle
- 윈도우
- Windows
- user
- DATABASE
- eclipse
- mssql
- 오라클
- 테이블
- 자동차
- select
- IP
- sql
- 리눅스
- 서버
- DB
- Shell
- Linux
- MySQL
- Toad
- java
- apache
- tomcat
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |