一、應用場景nginx
當網站訪問量大後,日誌數據就會不少,若是所有寫到一個日誌文件中去,文件會變得愈來愈大。文件大速度就會慢下來,好比一個文件幾百兆。寫入日誌的時候,會影響操做速度。另外,若是我想看看訪問日誌,一個幾百兆的文件,下載下來打開也很慢。shell
二、shell腳本bash
nginx-log-split.sh
網站
#!/bin/bashspa
base_path='/home/wwwlogs' # nginx設置的日誌保存目錄日誌
log_path=$(date -d yesterday +"%Y%m") # 日誌分割以後保存地址orm
day=$(date -d yesterday +"%d") # 日誌名進程
mkdir -p $base_path/$log_pathit
mv $base_path/access.log $base_path/$log_path/access_$day.logast
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
一、nginx 的主進程收到USR1信號,會從新打開日誌文件(以nginx配置文件中的日誌名稱命名,就是配置文件中access_log項所設置的值,若是文件不存在,會自動建立一個新的文件xxx.log)。
二、而後把日誌文件的擁有者改成「工做進程(worker進程)」,目的是讓worker進程就具有了對日誌文件的讀寫權限(master和worker一般以不一樣用戶運行,因此須要改變擁有者)。
三、nginx主進程會關閉重名的日誌文件(也就是剛纔使用mv命令重命名成xxx.log_ 20130909.log的文件),並通知工做進程使用新打開的日誌文件(剛纔主進程打開的文件xxx.log)。具體實現上更細化點就是,主進程把USR1信號發給worker,worker接到這個信號後,會從新打開日誌文件(也就是配置文件中約定的xxx.log)
三、nginx日誌分割下載到本地
能夠經過ansys完成