내 파티션 설치가 가득 찼음을 발견했습니다 /var
. 디스크 사용량을 추적하는 동안 내 Nginx 로그 파일이 상당히 크고 올바른 파일에 기록되지 않는 것 같다는 사실을 발견했습니다.
ls -ltr
나에게 이것을 주었다 /var/log/nginx
:
total 17170060
-rw-r----- 1 nobody adm 112315467 Apr 28 2015 access.log.14.gz
-rw-r----- 1 nobody adm 70554720 Apr 29 2015 access.log.13.gz
-rw-r----- 1 nobody adm 68145066 Apr 30 2015 access.log.12.gz
-rw-r----- 1 nobody adm 77951766 Dec 7 06:25 access.log.10.gz
-rw-r----- 1 nobody adm 81764378 Dec 8 06:25 access.log.9.gz
-rw-r----- 1 nobody adm 75397419 Dec 9 06:25 access.log.8.gz
-rw-r----- 1 nobody adm 68738862 Dec 10 06:25 access.log.7.gz
-rw-r----- 1 nobody adm 73802613 Dec 11 06:25 access.log.6.gz
-rw-r----- 1 nobody adm 66144521 Dec 12 06:25 access.log.5.gz
-rw-r----- 1 nobody adm 65385900 Dec 13 06:25 access.log.4.gz
-rw-r----- 1 nobody adm 68117105 Dec 14 06:25 access.log.3.gz
-rw-r----- 1 nobody adm 69441057 Dec 15 06:25 access.log.2.gz
-rw-r----- 1 nobody adm 0 Jan 20 06:25 access.log
-rw-r----- 1 nobody adm 7762196 Feb 1 09:45 error.log
-rw-r----- 1 nobody adm 16676558550 Feb 1 10:24 access.log.1
보시다시피 access.log.1
파일이 작성되고 있습니다.
이것은 내 /etc/logrotate.d/nginx
스크립트입니다.
/var/log/nginx/*.log {
daily
size 1G
missingok
rotate 10
compress
delaycompress
notifempty
create 0640 nobody adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
}
관련 라인은 다음과 같습니다 /etc/nginx/nginx.conf
.
pid /var/run/nginx.pid;
...snip...
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
고쳐 쓰다
오늘 아침에 확인해 보니 같은 문제가 있었습니다. 명령줄에서 실행 했는데 service nginx reload
이전 파일이 해제되고 새 파일을 쓰기 시작했습니다. 기반으로이 게시물그리고 내 관찰은
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid\`
그리고
service nginx reload >/dev/null 2>&1
/etc/logrotate.d/nginx
스크립트 에서 .
성공하면 다시 보고하겠습니다.
답변1
첫날
/etc/logrotate.d/nginx
OP에서 언급한 대로 스크립트를 변경한 후...
/var/log/nginx/*.log {
daily
size 1G
missingok
rotate 10
compress
delaycompress
notifempty
create 0640 nobody adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
service nginx reload >/dev/null 2>&1
endscript
}
... access.log
이름이 으로 올바르게 변경되고 access.log.1
게시된 다음 새 항목을 작성하기 시작합니다 access.log
. 그러나 gzip은 실행되지 않습니다 access.log.1
.
다음날
파일 은 gzip으로 압축 access.log.1
되었습니다 access.log.2
. 나는 이 delaycompress
지시어가 다음 날까지 로그 파일이 압축되는 것을 방지한다고 생각합니다. ls -ltr
나에게 다음과 같은 출력을 제공합니다.
total 3344744
-rw-r----- 1 nobody adm 68738862 Dec 10 06:25 access.log.10.gz
-rw-r----- 1 nobody adm 73802613 Dec 11 06:25 access.log.9.gz
-rw-r----- 1 nobody adm 66144521 Dec 12 06:25 access.log.8.gz
-rw-r----- 1 nobody adm 65385900 Dec 13 06:25 access.log.7.gz
-rw-r----- 1 nobody adm 68117105 Dec 14 06:25 access.log.6.gz
-rw-r----- 1 nobody adm 69441057 Dec 15 06:25 access.log.5.gz
-rw-r----- 1 nobody adm 748290175 Feb 1 10:50 access.log.4.gz
-rw-r----- 1 nobody adm 58575628 Feb 2 08:32 access.log.3.gz
-rw-r----- 1 nobody adm 85585414 Feb 3 06:25 access.log.2.gz
-rw-r----- 1 nobody adm 8779427 Feb 4 02:39 error.log
-rw-r----- 1 nobody adm 2023509844 Feb 4 06:25 access.log.1
-rw-r----- 1 nobody adm 88608092 Feb 4 09:17 access.log