Nginx 로그 자동 분할 스 크 립 트

2050 단어
1. 분할 스 크 립 트: cutnginx_logs.sh
#!/bin/bash
#cut_nginx_logs.sh
#author xingxiudong

#set the path to nginx log files
log_files_path="/var/log/nginx"
#set nginx log files you want to cut
project_name=mmt
log_files_name=nginx_access_mmt
log_files_dir=${log_files_path}/bck/${project_name}/$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
set the path to nginx.
nginx_sbin="/etc/init.d/nginx"

############################################
#Please do not modify the following script #
############################################
mkdir -p $log_files_dir

#log_files_num=${#log_files_name[@]}

#cut nginx log files
mv ${log_files_path}/${log_files_name}.log ${log_files_dir}/${log_files_name}_$(date -d "yesterday" +"%Y%m%d")_$(date +"%Y%m%d%H%M%S").log

kill -USR1 $(cat /var/run/nginx.pid)

$nginx_sbin  force-reload

2. 정시 실행 파일 준비: croncur_nginx_logs
1 0 * * * /home/mmt/cut_nginx_logs.sh

3. 분할 스 크 립 트 파일 실행 권한 수정
sudo chmod 777 /home/mmt/cut_nginx_logs.sh

4, cron 데 몬 가입
sudo crontab /home/mmt/cron_cur_nginx_logs

=============================================================
어느 날, 지도 자 는 windows 기기 에서 매일 nginx 방문 로 그 를 내 려 고 하 는데 어 쩔 수 없 이 하 나 를 썼 다.
taskkill /F /IM nginx.exe

set "cmd_zszy=move F:
ginx-access_log\zszy\logs\zszy.log F:
ginx-access_log\zszy\logs\zszy.%date:~0,4%-%date:~5,2%-%date:~8,2%.log call %cmd_zszy%" start nginx

저장 후 이 일괄 처리 파일 을 nginx 루트 디 렉 터 리 에 두 고 windows 다음 작업 계획 을 추가 하면 매일 한 번 씩 실행 하면 됩 니 다. 이 일괄 처 리 는 모두 세 가지 일 을 했 습 니 다. 시스템 에서 실행 중인 nginx 프로 세 스 를 죽 이 고 백업 한 다음 시간 에 따라 로그 파일 이름 을 바 꾸 고 마지막 으로 nginx 서 비 스 를 시작 합 니 다.테스트 를 통 해 windows 아래 에서 nginx 서비스 가 중 단 된 상태 에서 로 그 를 백업 할 수 있 습 니 다. 이것 은 약간 아 쉽 지만 일반적인 상황 에서 이 백업 과정 은 1 ~ 2 초 안에 완 료 됩 니 다. 이 처 리 를 매일 새벽 에 실행 하고 nginx 제공 서비스 에 영향 을 주지 않 습 니 다.

좋은 웹페이지 즐겨찾기