일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Hack
- ext4
- rsync
- Bash
- rm
- apachetop
- Python
- iptables
- 솔라리스
- 쇼펜의상속자 #킨텍스메가쇼 #섬유향수탈취제
- goaccess
- rm -rf
- Cache
- Performance
- http
- windows
- 디스크
- 칭찬교육
- Linux
- pid
- CPU
- ext3
- cadre
- Kernel
- 리눅스
- 좌절교육
- PERL
- PORT
- DNS
- Disk
- Today
- Total
Ben's
/etc/cron.daily 하위 스크립트들의 동작 분석 및 시스템에 미치는 영향 본문
* 작성일: 2006-07-04
[00-logwatch]
* 00-logwatch 스크립트의 동작
: 시스템 내의 로그 파일을 종합하여 설정에 따라 재가공 한뒤 지정된 메일주소로 보내주어 서버전체의 많은 로그를 한눈에
볼 수 있게 해주는 스크립트(/etc/log.d/scripts/logwatch.pl 의 심볼릭 링크)
* /etc/log.d/conf/logwatch.conf: 00-logwatch 스크립트에서 참조하는 환경파일(logwatch 실행옵션 설정)
- LogDir: 기본 로그 디렉토리
- TmpDir: 기본 임시 디렉토리
- MailTo: 메일 리포트를 받을 기본 메일 계정
- Print: "Yes" 이면 메일을 보내는 대신 화면에 출력해준다.
- UseMkTemp: mktemp가 설치되었고 -d 옵션을 쓸수 있으면 "Yes"로 지정해준다
- MkTemp: mktemp 명령어의 절대경로 지정
- Range: log들을 수집할 logfile들의 범위로 yesterday, today, ALL 중 선택가능함.
- Detail: log들을 수집할때 얼만큼 세부적인 정보를 수집할 것인지 Low, Med, High 중 선택 가능함.
- Service: /etc/log.d/conf/services 내의 서비스별 로그 추출 파일중 하나를 명시하거나 All을 사용하여 모두를 포함시킬수 있음.
- mailer: mail 발송하는 명령어의 절대경로 지정
* /etc/log.d/conf/services/*: 디렉토리내의 각 파일들은 자신이 담당하는 서비스가 발생시키는 로그중 패턴검색을 통하여 중요한 정보만을 뽑아내는 역할을 함.
* 시스템에 미치는 영향
: 시스템에 이상이 발생하여 로그파일의 양이 증가하면 스크립트의 수행시간이 길어지고 이에 비례하여 logwatch에 의해
메일로 보내지는 log report의 양이 증가함.
[0anacron]
* 0anacron 스크립트의 동작
- /etc/cron.daily 내의 다른 어떤 파일 보다도 먼저 실행됨.
- anacron의 time-stamp만을 업데이트 해주는 스크립트
(타임스탬프 파일 위치: /var/spool/anacron 내의 타임스탬프 파일에 날짜가 기록됨)
* anacron: anacron은 cron과 유사하지만 시스템이 꺼졌다가 다시 켜졌을 경우 매일, 매주, 매월 실행되는 cron 작업이
제대로 실행되는지 확인하여 실행되지 않았다면 실행해 주는 데몬임.
* /etc/anacrontab: anacron의 환경파일
-------------------------------------------------------------------------------
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These entries are useful for a Red Hat Linux system.
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
30 15 cron.monthly run-parts /etc/cron.monthly
-------------------------------------------------------------------------------
- 필드1: period, 여기서 명시한 주기 내에서 개별 작업들이 실행되었는지 확인함.(일단위)
- 필드2: delay, 만일 주기 내에 개별 작업들이 실행되지 않았다면 부팅된후 여기서 명시한 시간을 지연한후 실행함.(분단위)
- 필드3: job-identifier, 타임스탬프 파일명("/"는 사용할 수 없음)
- 필드4: command, 실행할 명령
* 시스템에 미치는 영향: time stamp 파일만 업데이트 되므로 전체 시스템 운영에 지장 없음.
[logrotate]
* logrotate 스크립트의 동작: 주기적으로 logrotate를 실행하여 자동으로 로그파일을 순환, 압축, 삭제 해주는 스크립트임
(로그파일을 메일로 보내주는 기능을 수행하기도 함)
* /etc/logrotate.conf 파일: logrotate 가 실행될때 참조되는 환경파일
- daily,weekly : 생성되는 로그 파일을 1일, 또는 1주일 단위로 새 파일로 순환
- rotate : 로그 파일을 몇 주동안 보관할 것인지 결정
- create : 이전 로그를 순환한 뒤 새로운 빈 로그 파일을 생성할 것인가 결정
- compress : 백업한 로그를 gzip을 이용하여 압축해서 보관할 것인가를 결정
- include : /etc/logrotate.d 에 존재하는 rpm 패키지에서 제공하는 로그 관리 정보를 이용할 것인가 결정
* /etc/logrotate.d: logrotate 시킬 각종 로그파일들의 설정들을 각 파일로 가지고 있는 디렉토리
- 예) /etc/logrotate.d/syslog
----------------------------------------------------------------------------
/var/log/messages /var/log/secure { => 대상로그파일(구분자: 공백)
sharedscripts =>대상로그파일이 여러개일 경우 현재 설정을 공유함
postrotate => logrotate 작업후(postrotate)/logrotate 작업전(prerotate) 수행할 작업
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true => logrotate 작업전 또는 후에 수행할 작업
endscript => postrotate/prerotate의 끝 시점을 나타냄.
} => "{" 부터 "}" 까지가 이 로그파일의 개별설정이 됨
----------------------------------------------------------------------------
※ missingok: 로그파일이 없더라도 에러로 처리하지 않음
※ size <SIZE>: <SIZE>에 해당하는 용량이 넘으면 rotate한다(단위: k(KB), M(MB))
※ monthly: 대상로그파일의 순환주기
※ compress: 순환된 파일을 gzip으로 압축함
※ rotate <N>: 순환되는 파일 갯수 지정(0부터 시작, 총 3개파일 존재함)
※ mail <mail address>: rotate 갯수를 초과하는 로그파일을 지정 메일주소로 보내줌
* /var/lib/logrotate.status: logrotate한 작업내역을 보관한 파일
* 시스템에 미치는 영향: 메일전송기능이 기본으로 off 상태이기 때문에 지정한 메일계정에 큰 메일 파일이 쌓이지 않음.
그러나 size가 아닌 주별 순환주기를 가지기 때문에 시스템에 이상이 있을경우 로그파일이 있는
파티션(/var)이 단시간에 큰 크기의 로그파일이 생길수 있음.
[prelink]
* prelink 스크립트의 동작
: ELF 형태의 실행파일(바이너리파일)실행될때 그것이 사용하는 라이브러리들을 미리 링크시켜놓아 실제로 실행시
실행속도를 높이기 위해 주기적으로 prelink 명령을 동작시키는 스크립트임.
* 파일 포맷
- a.out: ELF 이전에 쓰이던 바이너리로 점차 사라져 가는 Binary file format
- ELF(Executable and Linkable Format): 서로 다른 OS나 아키텍쳐에 호환이 될 수 있도록 표준화된 Binary file format.
(a.out보다 진보된 기능 포함됨)
* prelink: prelink 패키지에는 ELF 공유 라이브러리와 실행 파일을 수정하는 유틸리티가 포함되어 있음.
이 유틸리티를 사용함으로서 시작시 심볼을 검색할 필요가 없고 위치 재조정 작업이 감소하기 때문에,
프로그램의 속도는 더욱 빨라짐.
* prelink 옵션
-a: all, 프리링크를 수행할때 모든 실행파일과 라이브러리를 찾아 수행함.
-v: Verbose mode, 현재 프리링크된 라이브러리와 실행파일, 또한 이것들의 가상주소슬롯할당 상황을 보여줌.
-u: undo, 프리링크 되기전 초기상태로 되돌림.
-f: force, 강제로 수행
-m: conserve-memory, 라이브러리에 주소를 할당할때 제공된 주소공간슬롯들의 겹침 허용
-R: random, 라이브러리에 주소를 할당할때 아키텍쳐에 의존하는 가상주소공간범위의 임의의 주소에서 시작
* /etc/sysconfig/prelink: prelink 환경파일
- PRELINKING=yes : 프리링킹을 수행할 것인지의 여부
- PRELINK_OPTS=-mR : 프리링킹 수행시 추가되는 옵션을 저장한 변수
- PRELINK_FULL_TIME_INTERVAL=14: full prelinking 을 수행할 주기(단위:일)
- PRELINK_NONRPM_CHECK_INTERVAL=7: 마지막 prelinking 일로부터 여기에 지정된 날짜만큼 경과되었고 업그레이드된 rpm 패키지가 없으면 prelinking을 하지 않음.
* /var/lib/misc/prelink.{full,quick}: full 또는 quick prelinking을 수행한 날짜를 저장하고 있는 파일
* /var/lib/misc/prelink.force: 이전 버전에서 사용하던 파일
* /etc/prelink.cache
- prelinking을 수행하면 생기는 일종의 캐시파일.
- 실행파일(바이너리 형식으로 되어 있어 cat명령 으로는 볼수 없음)로써 /usr/sbin/prelink -p 명령으로 상황을 볼수 있음.
- 모든 프리링크된 바이너리/라이브러리, 각각이 사용하는 가상주소슬롯 위치등의 정보를 포함하고 있음.
* /var/log/prelink.log: prelinking 수행 결과를 저장하고 있는 로그파일
* 시스템에 미치는 영향: 주기적으로 실행됨으로써 새로 설치되거나 업데이트된 실행파일들의 실행 속도를 높여주는 효과가 있음.
[rpm]
* rpm 스크립트의 동작: 서버에 설치된 모든 rpm 패키지의 목록을 일정한 형식에 맞춘뒤 정렬하여 /var/log/rpmpkgs 파일에
그 내용을 저장해주는 스크립트
* 시스템에 미치는 영향: 단지 rpm 패키지의 목록을 파일로 유지하는 것이므로 전체 시스템 운영에 지장 없음.
[slocate.cron]
* slocate.cron 스크립트의 동작: locate/slocate 명령으로 파일을 검색하는 데 이용하는 locateDB
(/var/lib/slocate/slocate.db)를 생성/업데이트 해줌.
* locate/slocate : 미리 생성된 시스템에 존재하는 모든 파일의 경로에 대한 데이터베이스를 이용하여 검색하는 명령어
* /etc/updatedb.conf: slocate.cron 에서 참조하는 환경파일
- PRUNEFS : locateDB를 생성할때 제외할 파일 시스템 추가
- PRUNEPATHS : locateDB를 생성할때 제외할 디렉토리 추가
* 시스템에 미치는 영향
- 실행되는 동안 스크립트 내의 renice +19 -p $$ >/dev/null 2>&1 구문의 영향으로 nice 의 수치가 내려가기 때문에
이 작업의 priority가 높아져 iowait / CPU 사용율이 올라감. 만약 이 스크립트가 어떤 이유에 의해 종료되지 않고
hang 되면 시스템에 부하를 줄 수 있음.
------------------------------------------------------------------------
[root@nhko /etc/cron.daily]# top
top - 18:53:59 up 5 days, 8:31, 1 user, load average: 0.71, 0.22, 0.07
Tasks: 59 total, 2 running, 56 sleeping, 1 stopped, 0 zombie
Cpu(s): 0.0% us, 20.0% sy, 5.7% ni, 0.0% id, 74.0% wa, 0.3% hi, 0.0% si
Mem: 507736k total, 502136k used, 5600k free, 132512k buffers
Swap: 2096472k total, 1360k used, 2095112k free, 29992k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24209 root 35 19 1772 768 468 R 23.0 0.2 0:07.22 updatedb
------------------------------------------------------------------------
[tmpwatch]
* tmpwatch 스크립트의 동작: 시스템의 임시파일을 생성하는 디렉토리(/tmp등)내에서 일정기간 동안 접근이 없는 파일을 지워주는 스크립트
- /tmp: 특정파일을 제외(스크립트내 -x 옵션으로 표시됨)하고 240 시간동안 사용하지 않은 파일 삭제함
- /var/tmp: 720 시간 동안 사용하지 않은 파일 삭제
- /var/cache: 720 시간 동안 사용하지 않은 파일 강제(-f) 삭제(root에서 write access를 하지 않았더라도 강제 삭제함)
* 시스템에 미치는 영향: 만약 위의 디렉토리 내에 용량이 큰 파일이 존재한다면 지우는 시간동안 전체 시스템 운영에 지장을 줄 수 있으나 가능성 적음.
[yum.cron]
* yum.cron 스크립트의 동작: yum 서비스가 start 되었을때 생성되는 lock 파일(/var/lock/subsys/yum)의 유무를 검사하여
먼저 yum 패키지를 업데이트 하고
이어 다른 모든 패키지에 대해 업데이트를 해주는 스크립트
* 업데이트시 오류가 발생해 프로세스가 종료되지 않을 경우를 대비해 yum 패키지 업데이트 시간은 최대 10분, yum을
뺀 나머지 패키지의 업데이트 시간은 최대 120분으로 지정되어 있으며 이 시간이 지나면 업데이트가 모두 진행되지
않았더라도 종료됨.
* 시스템에 미치는 영향: 기본으로 yum이 disable 상태로 되어 있어서 영향 없음.
'리눅스' 카테고리의 다른 글
arp.dat 에서 update date 필드 (0) | 2013.01.16 |
---|---|
top utility bug(idle 0%) (0) | 2013.01.16 |
인터럽트가 많을때 CPU별로 분산 시켰을때 효과 테스트 (0) | 2013.01.16 |
hdparm 을 이용한 디스크 정보 보기(ide, sata 가능) (0) | 2013.01.16 |
/usr/include/sys 없을때 configure 에러 메시지 (0) | 2013.01.16 |