nginx 에서 발생 하 는 log 자동 절단, 만 료 되면 자동 삭제
1914 단어 리 눅 스 운영
수요
배경: 필요 한 것 이 있 습 니 다. nginx 는 매일 대량의 log 가 발생 하기 때문에 이 파일 들 을 매일 날짜 에 저장 하고 한 동안 후에 오래된 log 를 삭제 해 야 합 니 다. 현재 성숙 한 방안 은 아 리 클 라 우 드 의 ossfs 저장 통 을 사용 하여 만 료 된 log 를 먼저 저장 통 으로 옮 기 고 30 일이 지나 면 저장 통 의 만 료 log 를 삭제 하 는 것 입 니 다.
이루어지다
crontab
crontab -e
crontab 에 정기 적 으로 실행 되 는 스 크 립 트 파일 을 추가 합 니 다.
59 23 * * * /bin/sh /usr/local/nginxLog.sh
매일 23: 59 에 이 스 크 립 트 를 실행 합 니 다.
스 크 립 트 nginxLog. sh 구현
#!/bin/bash
log_dir="/var/log"
move_dir="/nginxLog"
nginx_pid=`ps -ef | grep nginx|grep master|awk -F " " '{print $2}'`
nginx_dir=`ls -l /proc/$nginx_pid/exe |awk -F ">" '{print $2}'`
date_str=`date +%Y%m%d`
move_day=3
save_day=30
dealFile=(`ls $log_dir|grep -E 'access.log|error.log'|awk -F '.log' '{print $1}'`)
inner_ip=$(/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:")
cd $log_dir
#
file_count=${#dealFile[@]}
for((i=0;i> nginx_log_mv.log
done
for move_log_file in $(cat nginx_log_mv.log)
do
mv $log_dir/$move_log_file $log_dir/${inner_ip}-${move_log_file}
mv $log_dir/${inner_ip}-${move_log_file} $move_dir
done
rm -rf nginx_log_mv.log
#
for((i=0;i> ${move_dir}/rm.log
find $move_dir -mtime +$save_day -type f -name "*${file_name}-*" | xargs rm -f
done
설명:
nginx_dir: nginx 의 시작 경 로 를 가 져 오고 동적 으로 ngnix 의 실행 경 로 를 가 져 오 는 것 은 스 크 립 트 가 더욱 통용 되 는 것 입 니 다.
dealFile: grep 와 awk 를 이용 하여 access. log 와 error. log 키 워드 를 가 진 파일 이름 을 가 져 오고 파일 의 접미사. log 를 분할 하여 배열 dealFile 에 저장 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Ngnix 빠 른 입문기능 에 있어 Nginx 는 우수한 웹 서비스 소프트웨어 일 뿐만 아니 라 , 역방향 대리 와 부하 균형 에 있어 유명한 LVS Haproxy 등 전문 대리 소프트웨어 도 가지 고 있 지만 Nginx 의 배 치 는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.