如何對Nginx日誌文件進行切割保存

日積月累下,日誌文件會愈來愈大,日誌文件太大嚴重影響服務器效率,需要定時對日誌文件進行切割。
切割的方式有按月切割、按天切割、按小時切割,通常都是按天切割。
那麼如何進行切割呢?
思路:nginx

  1. 建立日誌文件存放路徑
  2. 將日誌文件以當天時間爲名字進行重命名
  3. 發送kill -USR1信號給Nginx的主進程號,讓Nginx從新生成一個新的日誌文件

思路知道了,能不能具體點,show me code
下面以天天凌晨00:00切割nginx的訪問日誌access_log爲例,詳細講解切割步驟shell

步驟一:建立一個div_nginx_log.sh腳本,輸入下面按天切割日誌文件的shell腳本

#!/bin/bash
// nginx的日誌文件路徑
logs_path="/data1/logs/"

// 建立日誌文件存放路徑
mkdir -p ${logs_path}$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/
// 將日誌文件以當天時間爲名字進行重命名
mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log
// 發送kill -USR1信號給Nginx的主進程號,讓Nginx從新生成一個新的日誌文件
kill -USR1 `cat /var/nginx/nginx.pid`

步驟二:設置crontab,天天凌晨00:00切割nginx日誌文件

// 進入編輯crontab
crontab -e

// 輸入配置
// div_nginx_log.sh腳本的路徑要寫絕對路徑
00 00 * * * /bin/bash /root/div_nginx_log.sh

按上面兩個步驟來,這樣就大功告成了bash

注意:

若更改crontab配置後不起效果,從新加載cron:/etc/init.d/cron reload
若還不行就重啓crontab服務:/etc/init.d/crond restart服務器

相關文章
相關標籤/搜索