서버의 프로세스가 동작하면서 /var/log 경로에 httpd,mysqld,yum,access 등 수많은 로그가 생성되는데, 이 로그들을 관리하지 않으면 파일시스템 한계가 와서 서버에 부하가 걸릴 수 있다.
이런 상황을 방지하기 위해 로그들을 일정기간이 지나면 이전 로그들을 압축하여 용량을 줄이고 오래된 로그들은 삭제해줘야 하는데 이런 일련의 작업을 주기적으로 자동 관리해 주는 프로그램이 logrotate이다.
logrotate는 리눅스OS 설치시 자동으로 설치 된다.
/etc/cron.daily/logrotate //주기적인 cron 실행
/etc/logrotate.conf // logrotate 설정파일
/etc/logrotate.d // logrotate를 적용할 프로세스 설정파일
/usr/sbin/logrotate // logrotate 데몬 위치
/var/lib/logrotate.status // logrotate 작업내역 보관파일
-f : 강제 실행
-d : 디버그 모드
-v : 실행과정을 화면에 표시
ex)
# /usr/sbin/logrotate -f /etc/logrotate.conf
# /usr/sbin/logrotate -d /etc/logrotate.conf
# /usr/sbin/logrotate -vdf /etc/logrotate.conf
$ cd /etc/logrotate.d
$ vim 파일명
/var/log/*.log {
daily // 로그파일을 변경할 기간을 설정합니다.
daily : 매일 변경
weekly : 매주 변경
monthly : 매달 변경
yearly : 매년 변경
missingok // 로그파일이 없어도 그냥 진행합니다.
rotate 4 // 순환될 파일의 개수를 설정합니다. 0부터 시작하게 되며 위에서 weekly로 설정 시 4주간 보관합니다.
compress // 순환(백업)된 로그파일을 압축하도록 변경합니다. 주석을 해제하면 백업파일을 gzip으로 압축합니다.
notifempty // 로그파일이 비어있는 경우 순환을 하지 않습니다.
size 1G // 로그파일의 크기가 30k를 넘으면 순환합니다. 단위 K, M 사용이 가능합니다.
sharedscripts // 와일드카드로 지정된 여러파일에 적용합니다.
dateext // 로그파일명에 확장자 추가(Default : YYYYMMDD)
dateformat // [date형식 지정] : YYYYMMDD 형식이 아닌 다른 형식으로 사용시 지정
(Default : -%Y%m%d)
postrotate // logrotate 작업 이후에 지정된 작업(스크립트)를 실행합니다. 시작점
if invoke-rc.d apache2 status > /dev/null 2>&1; then \
invoke-rc.d apache2 reload > /dev/null 2>&1; \
fi;
endscript // 종료점
copytruncate // [반드시 써야하는 옵션](<https://enterkey.tistory.com/396>),
현재 로그내용을 복사하여 백업본으로 저장한후 원본 로그의 내용을 비우는 방식으로 저장
현재 로그파일 복사 후 원본 로그파일 크기 0으로 생성
}