2015년 12월 30일 수요일

logrotate

개요
logrotate [-dv] [-f|--force] [-s|--state file] config_file+

서술
logrotate는 많은 양으로 생성되는 log 파일을 쉬운 관리를 위해 디자인되었다.
이 것은 자동 순환, 압축, 제거, 그리고 log file의 메일 보내기가 가능하다. 각각의 로그 파일은
매일, 매주, 매달, 혹은 그 이상의 주기로 관리될 수 있다.

커맨드 옵션

-v verbose mode를 켠다.


-d -v 옵션을 포함하는 debug 모드를 켠다. debug모드에서는 log나 logrotate state 파일에 변화가 생기지 않는다.


-f, --force
logrotate가 필요하지 않더라도 강제로 실행시킨다. 가끔, 이것은 logrotate에 새로운 요소가 생겼을 때 유용하다.
혹은 오래된 log 파일이 수작업으로 인해 지워졌다면, 새로운 파일이 생김으로써 logging은 계속 정상동작할 것이다.


-m, --mail
logrotate가 log를 mail로 보낼 때 사용된다. 이 옵션은 두가지가 필요하다. 첫째로 메세지 내용, 둘째로 수신인이다.
기본적인 mail 내용은 /bin/mail -s 를 통해 알 수 있다.


-s, --state
logrotate가 대체 파일을 사용하게 한다. 이 것은 logrotate가 여러 다른 user에 의해 사용될 때 유용하다.


--usage
짧은 사용 메세지를 출력한다.

Configuration File

간단한 configuration file 의 예제는 아래와 같다.

 # sample logrotate configuration file
       compress

       /var/log/messages {
           rotate 5
           weekly
           postrotate
                                     /sbin/killall -HUP syslogd
           endscript
       }

       "/var/log/httpd/access.log" /var/log/httpd/error.log {
           rotate 5
           mail www@my.org
           size=100k
           sharedscripts
           postrotate
                                     /sbin/killall -HUP httpd
           endscript
       }

       /var/log/news/news.crit {
           monthly
           rotate 2
           olddir /var/log/news/old
           missingok
           postrotate
                                     kill -HUP ‘cat /var/run/inn.pid‘
           endscript
           nocompress
       }


가장 첫 줄은 global 옵션이다. 예를 들어, log 파일들은 순환 이후에 압축될 것이다.

그 다음 섹션은 /var/log/messages 파일을 관리하는 부분이다. 로그는 5주동안 순환하고 지워질 것이다.
5주동안 순환하여서 rotating되고 압축된 이후, 5주 이후에는 /sbin/killall -HUP syslogd 명령어가 실행될 것이다.

그 다음 섹션은 /var/log/httpd/access.log 와 /var/log/httpd/error.log 둘 다를 관리하는 부분이다.
size가 100k를 넘을 때마다 로그는 순환될 것이고 오래된 log파일은 5번의 순환이 있은 이후에 www@my.org 로 메일로 보내질 것이다.

마지막 섹션은 /var/log/news/news 아래의 모든 파일에 관한 설정이다. 각각의 파일은 월 주기로 순환될 것이다.


아래는 configuration file의 옵션들이다.

compress
log파일의 오래된 버전은 기본적으로 gzip으로 압축이 된다.

compresscmd
압축할 때 어떤 명령어를 쓸 지 정한다. 기본 값은 gzip이다.

uncompresscmd
압축을 풀 때 어떤 명령어를 쓸지 명시한다. 기본 값은 gunzip이다.

compressext
압축이 가능하게 되어 있다면 어떤 확장자를 사용할 지 명시한다.기본적으로 압축 command를 따른다.

copy log파일을 복사하면서 원본을 바꾸지 않는다. 이 옵션은 현재 log파일의 snapsho을 만들 때 사용할 수 있다.
이 옵션이 사용될 때, create 옵션은 영향을 주지 않고 지난 log파일은 그대로 보관된다.

copytruncate
현재 log 파일의 새로운 복사본을 만든 후, 현재 로그 파일의 내용을 모두 지운다.
이 옵션은 몇몇 프로그램이 log file을 닫지 못하고, 계속 이전의 log 파일에 계속 내용을 쓸 때 사용된다.
명심해야할 사항은 파일을 복사하고 이 것을 지울 때에 매우 작은 시간이 소요되고, 몇몇 log들은 손실될 수 있다는 것이다.
이 옵션이 사용될 때 create 옵션은 무시된다.

create mode owner group
순환 이후 즉시 새로운 로그 파일이 만들어진다. mode ㅇ에서는 로그를 위한 octal mode를 명시한다. (chmod(2)).
owner 는 이 파일을 소유할 user 이름, group 역시 이 파일을 소유할 group을 명시한다. 이 항목들은 생략될 수 있고,
기본적으로 원래 있던 파일의 값을 따르게 된다. 이 옵션은 noncreate 옵션을 이용해서 사용불가시킬 수 있다.


daily log 파일은 일 단위로 순환한다.

delaycompress
압축을 다음 순환시기 때 실행하는 것으로 미룬다. 이 옵션은 compress 와 함께 사용될 때만 효력을 발휘한다.
이 것은 몇몇 프로그램이 log파일을 종료시키지 못하고 계속해서 log 파일에 내용을 쓸 때 사용되어 질 수 있다.

extension ext
로그 파일은 rotation 이후 확장자를 붙일 수 있다. 만약 압축이 사용된다면 압축 확장자가 붙게 될 것이다. (보통 .gz)


ifempty
log 파일이 비어있더라도 순환을 시키도록 한다. 이 것은 notifempty 옵션을 덮어씌우게 된다.


mail address
로그가 순환되어서 존재하지 않을 때, address로 메일을 보내게 된다. 만약 특정 로그에 대해서 메일이 보내져야하지 않으면,
nomail 옵션을 사용할 수 있다.


mailfirst
mail 명령어를 사용할 때, 방금 순환된 파일만을 보낸다.


maillast
mail 명령어를 사용할 때, 거의 만료가 된 파일을 보낸다.


missingok
log 파일이 존재하지 않을 때 error 메세지 없이 다음으로 진행한다.


monthly
월 단위로 순환한다.


nocompress
순환 이후 압축시키지 않는다.


nocopy
원본 log 파일을 복사하지 않고, 그대로 남겨둔다.


nocopytruncate
순환 이후, 새로운 복사본을 만든 이후, 원본의 내용을 지우지 않는다.


nocreate
새로운 로그 파일을 만들지 않는다.


nodelaycompress
순환 이후 압축을 다음 사이클로 연기하지 않는다.


nomail
어떠한 주소로도 예전 로그 파일을 메일로 보내지 않는다.


nomissingok
로그 파일이 존재하지 않으면, 에러를 생성한다. 기본값이다.


noolddir
로그가 존재하는 같은 폴더에서 로그를 순환시킨다.


nosharedscripts
prerotate와 postrotate 값을 script 개별로 실행시킨다. 기본값이다. sharedscripts를 덮어씌운다.


notifempty
로그 파일이 비어있으면 순환시키지않는다.


olddir directory
로그 파일은 순환 이후, directory 로 옮겨진다. directory는 물리적으로 log가 존재하는 곳과 같은 device에 존재하여야한다.

postrotate/endscript
순환 이후, postrotate와 endscript 사이에 쓰여지는 script를 수행한다.

prerotate/endscript
순환 이전, prerotate와 endscript 사이에 쓰여지는 script를 수행한다.


firstaction/endscript
모든 wildcard 패턴에 매치되는 순환이 일어나기 전에, firstaction과 endsript사이에 있는 script를 수행한다.


lastaction/endscript
모든 wildcard 패턴에 매치되는 순환이 일어난 이후에, firstaction과 endsript사이에 있는 script를 수행한다.


rotate count
로그파일이 지워지거나, 메일로 보내지기 전에 count만큼 순환한다.만약 count가 0 이라면 이전 버전의 파일은 순환하기 전에 지워진다.


size size
size보다 log파일이 커지면 순환한다. 기본값은 k 이며, megabyte를 사용할 때는 M을 쓰면 된다.


sharedscripts
보통, prescript 와 postscript 의 script는 개별 log마다 실행되게 된다. 만약 sharedscripts가 명시되어 있으면,
매치되는 wildcard 패턴에 맞는 log에 따라 한번만 실행되게 된다. 매치되는 값이 없을 경우, 실행되지 않는다.

start count
순환을 시작할 번호이다. 0으로 해놓으면 확장자가 .0으로 붙고, 9로 설정하면 .9부터 시작할 것이다.


tabooext [+] list
금기되는 확장자의 list이다.


weekly
주 단위로 log가 순환하게 된다.


원본 출처 : http://www.linuxcommand.org/man_pages/logrotate8.html

댓글 없음 :

댓글 쓰기