Nginx日志切割
編輯:狂族晨曦 來(lái)源:腳本編程,系統(tǒng)運(yùn)維,經(jīng)驗(yàn)雜筆 日期:2017-02-06 閱讀: 2,728 次 2 條評(píng)論 » 百度已收錄
Nginx日志默認(rèn)情況下統(tǒng)統(tǒng)寫(xiě)入到一個(gè)文件中,文件會(huì)變的越來(lái)越大,非常不方便查看分析,也會(huì)造成服務(wù)器硬盤(pán)占用越來(lái)越大。我們通常是每天對(duì)Nginx的日志做切割。
Nginx日志切割方法有很多種,本文主要講的是用shell腳本對(duì)日志壓縮切割。
Nginx日志切割-單個(gè)日志
有時(shí)候我們的日志只有兩個(gè),一個(gè)access的,一個(gè)error的。可能只有access的日志比較大,通常錯(cuò)誤日志又不會(huì)太大,那么需求只對(duì)access的日志進(jìn)行切割。這時(shí)候用這個(gè)單個(gè)日志切割的腳本即可,優(yōu)點(diǎn)是比較簡(jiǎn)單。
#!/bin/sh
cd /usr/local/nginx/logs/
#壓縮并按日期命名access.log日志
tar -zcvf log_history/access_`date +%Y%m%d`.log.tar.gz access.log
#刪除源日志
rm -fr access.log
#刪除15天前的切割日志
find /usr/local/nginx/logs/ -name "*.log.tar.gz" -type f -mtime +15 -exec rm {} \; > /dev/null 2>&1
#向 Nginx 的進(jìn)程發(fā)送 USR1 信號(hào)以重新打開(kāi)日志文件
killall -s USR1 nginx
Nginx日志切割-多個(gè)日志
若Nginx配置了虛擬主機(jī)等會(huì)保存多個(gè)日志的,可能還需要對(duì)多個(gè)日志進(jìn)行切割,那么就可以使用以下腳本進(jìn)行多個(gè)日志切割。
#!/bin/sh
if [ ! -d /usr/local/nginx/logs/log_history ]; then
mkdir /usr/local/nginx/logs/log_history
fi
cd /usr/local/nginx/logs/
array=(access error host.access host.error host.ssl-access host.ssl-error)
for data in ${array[@]}
do
tar -zcvf log_history/${data}_`date +%Y%m%d`.log.tar.gz ${data}.log >> /dev/null
rm -fr ${data}.log
done
find /usr/local/nginx/logs/log_history/ -name "*.log.tar.gz" -type f -mtime +15 -exec rm {} \; > /dev/null 2>&1
killall -s USR1 nginx
Nginx日志切割-定時(shí)任務(wù)
無(wú)論是單個(gè)日志切割,還是多個(gè)日志切割,都需要使用cron服務(wù)定期執(zhí)行該腳本,下面設(shè)置成的是每晚23點(diǎn)59執(zhí)行,這樣nginx訪問(wèn)日志正好記錄的是全天的訪問(wèn)記錄。
#crontab -e 59 23 * * * /usr/local/nginx/logs/nginx_access_log.sh

定時(shí)任務(wù)
轉(zhuǎn)載請(qǐng)注明出處來(lái)自http://www.cnidcc.cn/nginx_log_cutting.html

川公網(wǎng)安備 51011202000104號(hào)
用shell腳本對(duì)日志壓縮切割的方法很不錯(cuò),感謝分享!
學(xué)習(xí)了