Linux 에서 Nginx 로그 파일 자동 분할 (3) --- Logrotate
1. 설치 여 부 를 확인 합 니 다.
[root@localhost ~]# rpm -qa |grep logrotate
logrotate-3.7.8-23.el6.x86_64
설치 되 어 있 지 않 으 면 yum 을 통 해 직접 설치 하면 됩 니 다.
[root@localhost ~]# yum install logrotate crontabs
둘째, logrotate: logrotate 를 설정 하 는 설정 파일 은 / etc / logrotate. conf 입 니 다. 수정 할 필요 가 없습니다.로그 파일 의 순환 은 독립 된 설정 파일 에 설정 되 어 있 습 니 다. / etc / logrotate. d / 디 렉 터 리 에 놓 여 있 습 니 다.
설정 인 스 턴 스 1:
[root@localhost ~]# vim /etc/logrotate.d/cut-log-file
/usr/local/nginx/logs/nginx.access.log {
monthly
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
위의 템 플 릿 은 통용 되 고 설정 파 라미 터 는 당신 의 요구 에 따라 조정 되 며 모든 파라미터 가 필요 한 것 은 아 닙 니 다.
설정 인 스 턴 스 2: 이 예 에서 로그 파일 을 따라 가 려 고 하지만 로그 파일 크기 는 50MB 로 늘 릴 수 있 습 니 다.
[root@localhost ~]# vim /etc/logrotate.d/cut-log-file
/usr/local/nginx/logs/nginx.access.log {
size=50M # 50M
rotate 5 # 5
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
설정 인 스 턴 스 3: 오래된 로그 파일 을 만 든 날짜 로 이름 을 짓 고 싶 습 니 다. dateext 상 숙 을 추가 하여 구현 할 수 있 습 니 다.
[root@localhost ~]# vim /etc/logrotate.d/cut-log-file
/usr/local/nginx/logs/nginx.access.log {
monthly
rotate 5
dateext #
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
3. 실행 절차:
1, 수 동 실행 명령 형식: logrotate + 프로필 (/ etc / logrotate. d / cut - log - file)
[root@localhost ~]# logrotate /etc/logrotate.d/cut-log-file
비고: logrotate / etc / logrotate. d / cut - log - file 은 하나의 분할 파일 만 실행 합 니 다. 많 으 면 logrotate / etc / logrotate. conf 만 실행 하면 모든 분할 파일 을 실행 할 수 있 습 니 다.
2. 폴 링 을 실행 하지 않 고 아 날로 그 만 보고 출력 을 표시 하려 면 매개 변수 - d 를 추가 해 야 합 니 다.
~
[root@localhost ~]# logrotate -d /etc/logrotate.d/cut-log-file
reading config file /etc/logrotate.d/cut-log-file
reading config info for /usr/local/nginx/logs/nginx.access.log
Handling 1 logs
rotating pattern: /usr/local/nginx/logs/nginx.access.log monthly (5 rotations)
empty log files are not rotated, old logs are removed
considering log /usr/local/nginx/logs/nginx.access.log
log does not need rotating
not running postrotate script, since no logs were rotated
[root@localhost ~]#
우리 가 위의 출력 결 과 를 통 해 알 수 있 듯 이 logrotate 는 이 순환 이 불필요 하 다 고 판단 합 니 다.만약 파일 의 시간 이 하루 보다 작다 면, 이것 은 발생 할 것 이다.
3. 강제 폴 링: 순환 조건 이 만족 하지 않 더 라 도 '- f' 옵션 을 사용 하여 logrotate 순환 로그 파일 을 강제 할 수 있 습 니 다. '- v' 매개 변 수 는 상세 한 출력 을 제공 합 니 다.
[root@localhost ~]# logrotate -vf /etc/logrotate.d/cut-log-file
reading config file /etc/logrotate.d/cut-log-file
reading config info for /usr/local/nginx/logs/nginx.access.log
Handling 1 logs
rotating pattern: /usr/local/nginx/logs/nginx.access.log forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /usr/local/nginx/logs/nginx.access.log
log needs rotating
rotating log /usr/local/nginx/logs/nginx.access.log, log->rotateCount is 5
dateext suffix '-20151120'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding logs to compress failed
glob finding old rotated logs failed
fscreate context set to unconfined_u:object_r:usr_t:s0
renaming /usr/local/nginx/logs/nginx.access.log to /usr/local/nginx/logs/nginx.access.log-20151120
creating new /usr/local/nginx/logs/nginx.access.log mode = 0644 uid = 0 gid = 0
running postrotate script
set default create context
4. logrotate 로그 기록 보기: logrotate 자체 로 그 는 보통 / var / lib / logrotate / status 디 렉 터 리 에 저 장 됩 니 다.만약 배 리 케 이 드 목적 에 있다 면, 우 리 는 logrotate 를 지정 한 파일 에 기록 하고 싶 습 니 다. 아래 와 같이 명령 행 에서 지정 할 수 있 습 니 다.
5, Logrotate 정시 작업: logrotate 에 필요 한 cron 작업 은 설치 할 때 자동 으로 생 성 되 어야 합 니 다.
[root@localhost ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
한 마디 로, logrotate 도 구 는 방대 한 로그 파일 로 인해 저장 공간 이 소모 되 는 것 을 방지 하 는 데 매우 유용 하 다.설정 이 완료 되면 프로 세 스 가 자동 으로 진행 되 며, 인위적인 관여 없 이 장시간 실 행 될 수 있 습 니 다.
다음으로 전송:https://blog.51cto.com/liqingbiao/1714992
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.