nginx 의 자동 로그 절단 - 스 크 립 트 가 아 닙 니 다.

이전에 설치 한 nginx 는 모두 스스로 컴 파일 하여 설치 한 후에 rpm 패키지 로 만 들 었 다.새 회 사 를 옮 긴 후에 서버 의 nginx 가 모두 yum 에 설치 되 어 있 는 것 을 발 견 했 습 니 다. 이것 도 문제 가 없고 업 무량 이 많 지 않 습 니 다.
그 후에 나 는 nginx 의 로그 저장 디 렉 터 리 에서 로그 가 모두 잘 렸 다 는 것 을 알 게 되 었 다. 이것 은 매우 정상 적 인 것 이다. 그러나 내 가 보기에 crontab 아래 에 서 는 스 크 립 트 파일 이 nginx 의 로그 절단 을 하지 않 았 다.
저 는 머리 가 잘 리 지 않 았 습 니 다. 제 가 생각 했 던 것 은 모두 스 크 립 트 로 로 그 를 자 른 다음 에 정시 작업 에 넣 고 하늘 에 따라 실 행 했 습 니 다.
이후 인터넷 글 을 검색 해 nginx 를 자 르 는 로 그 를 찾 았 다.
서비스 이름: logrotate, 설치 방법: yum -y install logrotate
Ubuntu 설치 방법: apt-get -y install logrotate
자신 이 전에 산 클 라 우 드 서버 인지 아 닌 지 는 모 르 겠 지만 보통 가장 기본 적 인 설치 입 니 다. 아마 이 소프트웨어 에 설치 되 지 않 았 을 것 입 니 다.
yum 방식 으로 설 치 된 nginx 라면 시스템 은 기본적으로 logrotate 라 는 로그 관리 소프트웨어 를 통 해 하늘 에 따라 분 단 됩 니 다.
살펴보다 logrotate 서버 에 있 는 파일 위치
[root@123~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.8
/usr/share/doc/logrotate-3.7.8/CHANGES
/usr/share/doc/logrotate-3.7.8/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz

logrotate 의 프로필 은 / etc / logrotate. conf 이 고 / etc / logrotate. d / 는 다른 프로필 을 저장 하 는 디 렉 터 리 입 니 다.이 디 렉 터 리 의 모든 파일 은 / etc / logrotate. conf 에서 주동 적 으로 읽 혀 집 니 다.
[root@123~]# ls /etc/logrotate.d/
nginx           ppp             syslog          wpa_supplicant  yum

프로필 아래 nginx 프로필 이 있 는 것 을 보 았 습 니 다. 내용 은 다음 과 같 습 니 다.
[root@123~]# cat /etc/logrotate.d/nginx 
/var/log/nginx/*log {    # nginx       ,            
    daily                #         
    rotate 10            #    10     。   11     ,               
    missingok            #       ,        ,  “      ”     
    notifempty           #        ,     
    compress             #        ,         gzip    
    sharedscripts        #  postrotate  ,                    。        ,                                     #      
    postrotate           #          ,postrotate endscript           。      ,rsyslogd                                #           。  :                
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}

daily:         
weekly:         
monthly:         
nocompress:      ,     
copytruncate:            ,          
nocopytruncate:           
create mode owner group:    ,                 
nocreate:         
delaycompress   compress      ,                 
nodelaycompress    delaycompress   ,      。
size size                 ,Size      bytes (  )  KB (sizek)  MB (sizem).
dateext:             ,         :xxx.log-20160402.gz     。         ,          ,      xxx.log-1    
delaycompress:   compress     ,delaycompress    logrotate          ,             。                      
create 640 nginx adm:           ,         ,  logrotate           。
rotate count                ,0      ,5    5    

logrotate 의 절단 시간 은 기본적으로 / etc / anacrontab 에서 설정 되 어 있 습 니 다.
START_HOURS_RANGE 설정 logrotate 실행 시간
[root@123~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly

일반적으로 스 크 립 트 를 사용 하면 로 그 를 자 르 는 명령 을 실행 한 후 nginx 를 부 드 럽 게 다시 시작 합 니 다. 즉, reload 입 니 다.
다음은 새로운 방법 을 제공 합 니 다. 테스트 환경 에서 테스트 가 끝 난 후에 생산 환경 을 변경 하 십시오. 해당 환경 이나 배치 에 따라 차이 가 있 을 수 있 습 니 다.
\ # nginx 메 인 프로 세 스에 USR 1 신 호 를 보 내 고 로그 파일 을 다시 엽 니 다. 그렇지 않 으 면 뮤 직 비디오 후의 파일 에 데 이 터 를 계속 쓸 것 입 니 다.이 유 는 Liux 시스템 에서 커 널 은 파일 설명자 에 따라 파일 을 찾 습 니 다.이렇게 하지 않 으 면 로그 절단 에 실 패 했 습 니 다.
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
당신 도 나 처럼 만 났 다 면 로 그 는 자동 으로 잘 렸 지만 정시 작업 이 실행 되 는 것 을 발견 하지 못 했 습 니 다. 이 글 을 저장 하 십시오.
참고 글:https://www.cnblogs.com/ilanni/p/5365420.html
이 글 은 더욱 상세 합 니 다.https://www.cnblogs.com/kevingrace/p/6307298.html

좋은 웹페이지 즐겨찾기