Nginx 로그 정시 절단 스 크 립 트
7854 단어 분류 되 지 않 음
첫 번 째 단 계 는 로그 파일 의 이름 을 바 꾸 는 것 입 니 다. 이름 을 바 꾼 후 nginx 에서 로그 파일 을 찾 지 못 해 로 그 를 잃 어 버 릴 염려 는 없습니다.원래 이름 의 로그 파일 을 다시 열지 않 기 전에 nginx 는 이름 을 바 꾼 파일 에 로 그 를 씁 니 다. Liux 는 파일 이름 이 아 닌 파일 설명자 로 로 그 를 씁 니 다.
두 번 째 단 계 는 nginx 메 인 프로 세 스에 USR 1 신 호 를 보 냅 니 다.
nginx 메 인 프로 세 스 는 신 호 를 받 으 면 설정 파일 에서 로그 파일 이름 을 읽 고 로그 파일 을 다시 엽 니 다 (설정 파일 의 로그 이름 으로). 작업 프로 세 스 의 사용 자 를 로그 파일 의 소유자 로 합 니 다.
로그 파일 을 다시 열 면 nginx 메 인 프로 세 스 는 이름 이 바 뀐 로그 파일 을 닫 고 작업 프로 세 스에 게 새로 열 린 로그 파일 을 사용 하 라 고 알 립 니 다.
작업 프로 세 스 는 즉시 새 로그 파일 을 열 고 이름 이 바 뀐 로그 파일 을 닫 습 니 다.
그리고 오래된 로그 파일 을 처리 할 수 있 습 니 다.
nginx 로 그 는 날짜 에 따라 스 크 립 트 를 자동 으로 자 릅 니 다 cutnginx_log. sh 는 다음 과 같 습 니 다.
#!/bin/bash
#by www.elesos.com
#
logs_path="/opt/nginx/html/"
# pid
pid_path="/opt/nginx/logs/nginx.pid"
#
mkdir-p${logs_path}$(date-d"yesterday" +"%Y")/$(date-d"yesterday" +"%m")/
#
mv ${logs_path}elesos.com.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/elesos.com_$(date -d "yesterday" +"%Y%m%d").log
mv${logs_path}elesos.com.log ${logs_path}$(date-d"yesterday" +"%Y")/$(date-d"yesterday" +"%m")/elesos.com_$(date-d"yesterday" +"%Y%m%d").log
\ # nginx 메 인 프로 세 스에 신 호 를 보 내 로 그 를 다시 엽 니 다.kill-USR1`cat${pid_path}`
위의 로그 파일 이름 을 당신 의 것 으로 수정 하 는 것 을 주의 하 세 요.
그리고 crontab 설정 작업 을 통 해 Linux 계획 작업 cron 사용 안내 참조0 0 * * * bash /usr/local/nginx/nginx_log.sh
이렇게 하면 매일 0 시 0 분 에 nginx 로 그 를 날짜 형식 으로 바 꾸 고 오늘 의 새 로그 파일 을 다시 생 성 합 니 다.
참고
http://www.nginx.cn/255.html
http://www.jb51.net/LINUXjishu/33585.html