nginx 에서 발생 하 는 log 자동 절단, 만 료 되면 자동 삭제

1914 단어 리 눅 스 운영
nginx 에서 발생 하 는 log 자동 절단, 만 료 되면 자동 삭제
수요
배경: 필요 한 것 이 있 습 니 다. 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 에 저장 합 니 다.

좋은 웹페이지 즐겨찾기