nginx 로그 절단 및 제거

4778 단어 nginx
1. nginx 끊 임 없 는 서비스 로 로 그 를 자 릅 니 다.
1.1 스 크 립 트 예제
#!/bin/bash
log_path="/home/gongyong/nginx/logs" cutDate=`date +%Y-%m-%d_%H` nginx_cmd="/home/gongyong/nginx/bin/nginx" shellScriptPath="/home/gongyong/crontab"
echo "${cutDate}    start delete old log and cut current log" > ${shellScriptPath}/nginx_log_cut.log
toDeleteFiles=`find ${log_path} -mtime +1 -type f -print |grep -E "access|error"` for toDeleteFile in ${toDeleteFiles} do     echo "${cutDate}    ${toDeleteFile} will be deleted" >> ${shellScriptPath}/nginx_log_cut.log     rm -f ${toDeleteFile} done
if [ ! -d ${log_path} ];then     echo "${log_path} not exist" > ${shellScriptPath}/nginx_log_cut.log.error     exit 1 fi cp ${log_path}/access.log  ${log_path}/access.log.${cutDate} && > ${log_path}/access.log cp ${log_path}/error.log  ${log_path}/error.log.${cutDate} && > ${log_path}/error.log
# reopen a new log file ${nginx_cmd} -s reopen -p /home/gongyi/nginx/
2. kill 명령 을 사용 하여 nginx 메 인 프로 세 스에 신 호 를 보 냅 니 다.
        nginx 메 인 프로 세 스에 USR 1 신 호 를 보 내 고 로그 파일 을 다시 엽 니 다. 그렇지 않 으 면 뮤 직 비디오 후의 파일 에 데 이 터 를 계속 쓸 것 입 니 다.이 유 는 Liux 시스템 에서 커 널 은 파일 설명자 에 따라 파일 을 찾 습 니 다.이렇게 하지 않 으 면 로그 절단 에 실 패 했 습 니 다.
#!/bin/bash
log_path="/home/gongyong/nginx/logs" cutDate=`date +%Y-%m-%d_%H` nginx_cmd="/home/gongyong/nginx/bin/nginx" shellScriptPath="/home/gongyong/crontab"
echo "${cutDate}    start delete old log and cut current log" > ${shellScriptPath}/nginx_log_cut.log
toDeleteFiles=`find ${log_path} -mtime +1 -type f -print |grep -E "access|error"` for toDeleteFile in ${toDeleteFiles} do     echo "${cutDate}    ${toDeleteFile} will be deleted" >> ${shellScriptPath}/nginx_log_cut.log     rm -f ${toDeleteFile} done
if [ ! -d ${log_path} ];then     echo "${log_path} not exist" > ${shellScriptPath}/nginx_log_cut.log.error     exit 1 fi cp ${log_path}/access.log  ${log_path}/access.log.${cutDate} && > ${log_path}/access.log cp ${log_path}/error.log  ${log_path}/error.log.${cutDate} && > ${log_path}/error.log
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
3 、 logrotate 로 절단
3.1 설치
  • yum -y install logrotate

  • 3.2 logrotate 설정
    [root@weblogic logrotate.d]# pwd /etc/logrotate.d [root@weblogic logrotate.d]# cat nginx /var/log/nginx/*log {     daily     rotate 10     dateext     missingok     notifempty     # compress     delaycompress     create 640 nginx adm     sharedscripts     postrotate         [ -f /var/run/nginx.pid ] && /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :     endscript }
    3.3 설정 매개 변수
    / var / log / nginx / nginx 로그 의 저장 디 렉 터 리 는 실제 상황 에 따라 수정 할 수 있 습 니 다.
    daily: 로그 파일 은 천륜 에 따라 이동 합 니 다.
    weekly: 로그 파일 은 주 별로 돌아 갑 니 다.
    monthly: 로그 파일 은 매달 돌아 갑 니 다.
    missingok: 로그 가 돌아 가 는 동안 '파일 을 찾 을 수 없습니다' 와 같은 오 류 는 무 시 됩 니 다.
    rotate 10: 한 번 에 10 개의 로그 파일 을 저장 합 니 다.11 번 째 로그 파일 에 대해 서 는 가장 오래된 로그 파일 이 삭 제 됩 니 다.
    dateext: 로그 파일 접 두 사 를 날짜 형식 으로 정의 합 니 다. 즉, 절 단 된 파일 은 xxx. log - 20160402. gz 와 같은 형식 입 니 다.이 매개 변 수 는 주석 이 떨 어 지면 숫자 에 따라 증가 합 니 다. 즉, 앞에서 말 한 xxx. log - 1 과 같은 형식 입 니 다.
    copress: 순환 작업 이 완 료 된 후에 이미 순환 한 압축 파일 은 gzip 로 압축 합 니 다.
    delaycopress: 항상 copress 옵션 과 함께 사용 합 니 다. delaycopress 옵션 은 logrotate 에 게 최근 압축 파일 을 압축 하지 말 라 고 지시 합 니 다. 압축 은 다음 라운드 에서 주기 적 으로 진 행 됩 니 다.이것 은 당신 이나 어떤 소프트웨어 가 최신 압축 파일 을 읽 어야 할 때 유용 합 니 다.
    notifempty: 빈 파일 이 라면 덤 프 를 하지 않 습 니 다.
    create 640 nginx adm: 지정 한 권한 과 사용자 속성 으로 새로운 로그 파일 을 만 들 고 logrotate 도 원본 로그 파일 의 이름 을 바 꿉 니 다.
    post rotate / endscript: 모든 다른 명령 이 완료 되면 post rotate 와 endscript 에서 지정 한 명령 이 실 행 됩 니 다.이 경우 rsyslogd 프로 세 스 는 즉시 설정 을 다시 읽 고 계속 실 행 됩 니 다.주의: 이 두 키 워드 는 반드시 단독으로 줄 을 지어 야 합 니 다.
    3.4 logrotate 절단 로 그 를 보 는 시간
    [root@weblogic logrotate.d]# 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       5       cron.daily              nice run-parts /etc/cron.daily       25      cron.weekly             nice run-parts /etc/cron.weekly @monthly 45     cron.monthly            nice run-parts /etc/cron.monthly
    # the jobs will be started during the following hours only
    START_HOURS_RANGE=3-22

    좋은 웹페이지 즐겨찾기