nginx每天會產生大量的訪問日誌,而且有些要求保留幾個月的日誌以便分析,如果不加入自動切割壓縮,儲存空間很快會被撐爆
下面用shell指令碼配合計畫任務crontab對nginx日誌進行自動切割壓縮
vim cut_nginx_log.sh
#!/bin/bash
year=`date +%y`
month=`date +%m`
day=`date +%d`
rq=`date +%y%m%d`
pid_path="/software/nginx/logs/nginx.pid"
logs_backup_path="/software/nginx/logs/$year$month"
logs_path="/software/nginx/logs/"
logs_access="1.access.log 2.access.log 3.access.log 4.access.log 5.access.log" #nginx**多個專案,每個專案日誌儲存到不同日誌檔案,所以分開寫
[ -d $logs_backup_path ]||mkdir -p $logs_backup_path #按月命名建立資料夾
for i in $ #for迴圈去處理上面每個專案的日誌檔案
do mv $$ $/$.$ #把日誌移到相應月份資料夾去處理
tar -zcvf $/$.$.tar.gz $/$.$ #壓縮日誌節省儲存空間
rm -rf $/$.$ #刪除處理完的日誌
done
echo "done"
把上面指令碼賦予執行許可權然後加入計畫任務,每天凌晨執行處理
chmod +x cut_nginx_log.sh
crontab -e => 00 00 * * * /bin/bash /software/nginx/logs/cut_nginx_log.sh
crontab -l => 檢視計畫任務
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...