Nginx日誌切割

2021-10-09 21:00:24 字數 2221 閱讀 8266

vim /root/project/nginx_logs_task/cut_nginx_log.sh

# /bin/bash

#function@nginx日誌切割

#日誌檔案備份個數

number=20

#nginx日誌路徑

base_path='/usr/local/nginx/logs'

#nginx日誌備份路徑

base_path_back_dir='/usr/local/nginx/logs_back'

#建立目錄時間 當天時間 例如:2019-03-14

#log_path=$(date -d yesterday +"%y%m%d") #該引數是建立前一天資料,如需要當天備份,可使用

log_path=$(date +"%y%m%d")

#日誌建立時間

#date=$(date -d yesterday +"%y-%m-%d-%h")#該引數是建立前一天資料,如需要當天備份,可使用

date=$(date +"%y-%m-%d-%h")

#如果資料夾不存在則建立

if [ ! -d $base_path_back_dir ];

then

mkdir -p $base_path_back_dir;

fi#在nginx日誌備份路徑下建立以當天時間命名的目錄

mkdir -p $base_path_back_dir/$log_path

#將備份日誌

mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log

mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log

mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log

#記錄操作日誌

echo "mv $base_path/access.log $base_path_back_dir/$log_path/access_$date.log" >> $base_path_back_dir/log.txt

echo "mv $base_path/error.log $base_path_back_dir/$log_path/error_$date.log" >> $base_path_back_dir/log.txt

echo "mv $base_path/status.log $base_path_back_dir/$log_path/status_$date.log" >> $base_path_back_dir/log.txt

#nginx日誌重讀

kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`

#找出需要刪除的備份

delfile=`ls -l -crt $base_path_back_dir -f |grep "/$" | awk '' | head -1`

#判斷現在的備份數量是否大於$number

count=`ls -l $base_path_back_dir | grep "^d" | wc -l`

if [ $count -gt $number ]

then

#刪除最早生成的備份,只保留number數量的備份

rm -rf $delfile

#寫刪除檔案日誌

echo "rm -rf $delfile" >> $base_path_back_dir/log.txt

fi

vim /root/project/nginx_logs_task/cut_nginx_log.cron

每天凌晨執行一次

0 0 * * * . /etc/profile;/bin/sh /root/project/nginx_logs_task/cut_nginx_log.sh
crontab -l

以前有任務執行 crontab -e 編輯

以前沒有任務crontab cut_nginx_log.sh

nginx日誌切割

web 訪問日誌 access log 記錄了所有外部客戶端對web伺服器的訪問行為,包含了客戶端ip,訪問日期,訪問的url資源,伺服器返回的http狀態碼等重要資訊。一條典型的web訪問日誌如下 規劃 1 要解決問題 2 nignx沒有自動分開檔案儲存日誌的機制。由於nginx它不會幫你自動分檔...

nginx 日誌切割

直接在nginx配置檔案中,配置日誌迴圈,而不需使用logrotate或配置cron任務。需要使用到 time iso8601 內嵌變數來獲取時間。time iso8601格式如下 2015 08 07t18 12 02 02 00。然後使用正規表示式來獲取所需時間的資料。使用下面的 塊 1 2 3...

Nginx日誌切割

編輯指令碼tianshl tianshl nginx vim nginx log division.sh指令碼內容 bin sh 昨天日期 yesterday date v 1d y m d 日誌目錄 log path usr local var log nginx sdk日誌路徑 sdk path...