您好,登錄后才能下訂單哦!
本篇文章為大家展示了squid的日志rotate問題怎么解決,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
Squid不斷的寫日志,假如cache非常忙,那么在一段時間后,這些日志文件可能變得很大。某些操作系統甚至限制了文件的最大size(例如2G),假如寫文件超過了這個size就會報錯。為了保持日志文件容易管理,以及讓Squid正常工作,必須定期輪轉日志。
Squid有內建的功能用于輪轉日志。可通過squid -k rotate命令來調用它,然后告訴Squid對每個日志文件保持多少份舊拷貝。例如,假如設置它為7,對每個日志文件會有8個版本:1個當前的,和7個舊的。
舊日志文件以數字擴展來重命名。例如,當執行一次輪轉時,Squid重命名log.6到log.7,然后是log.5到log.6,依此類推。當前log變成log.0,并且Squid創建一個新的空文件,命名為log。
啟動squid后,每次執行squid -k rotate時,Squid輪轉下述文件:cache.log, access.log, store.log, useragent.log (假如激活), 以及referer.log (假如激活)。Squid也會創建最新版本的swap.state文件。然而請注意,swap.state不會以數字擴展形式來輪轉。
Squid不會自己輪轉日志,最好的辦法是在crontab里自動執行。例如:
0 0 * * * /usr/local/squid/sbin/squid -k rotate
補: 0 0 * * 1 /usr/local/squid/sbin/squid -f /usr/local/squid/etc/squid.conf.external -k rotate > /dev/null 2>&1 0 0 * * 1 /usr/local/squid/sbin/squid -f /usr/local/squid/etc/squid.conf.internal -k rotate > /dev/null 2>&1 0 0 * * 1 /usr/local/squid/sbin/squid -f /usr/local/squid/etc/squid.conf.reverse -k rotate > /dev/null 2>&1
假如你想編寫自己的腳本來管理日志文件,Squid提供了一個有用的模式,簡單的設置logfile_rotate指令為0。這樣,當你運行squid -k rotate命令時,Squid簡單的關閉當前日志文件,并且打開新的。如果操作系統允許重命名被其他進程打開的文件,則這點非常有用。下述shell腳本描述了一個思路:
#!/bin/sh set -e yesterday_secs=`perl -e 'print time -43200'` yesterday_date=`date -r $yesterday_secs +%Y%m%d` cd /usr/local/squid/var/logs # rename the current log file without interrupting the logging process mv access.log access.log.$yesterday_date # tell Squid to close the current logs and open new ones /usr/local/squid/sbin/squid -k rotate # give Squid some time to finish writing swap.state files sleep 60 mv access.log.$yesterday_date /archive/location/ gzip -9 /archive/location/access.log.$yesterday_date
上述內容就是squid的日志rotate問題怎么解決,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。