天天看點

linux下清除Squid緩存的方法記錄

在日常運維工作中,隻要用到squid緩存服務,就會常常被要求清理squid緩存。

比如公司上司要求删一篇新聞,新聞是生成的靜态。運維人員把伺服器上靜态的新聞頁面删除了後,不料代理伺服器上緩存還有。

緩存伺服器如果用的是suqid,下面就對清理squid緩存的方法做一梳理:

(1)首先在squid的主配置檔案中添加acl 清單,并允許受信任的主機有權限清除緩存。

[root@hqtime ~]# vim /etc/squid/squid.conf

.......

acl managercache src 192.168.1.145 127.0.0.1

acl Purge method PURGE

http_access allow managercache Purge

http_access deny Purge

(2)使用squid自帶指令squidclient

如下清除squid中一條緩存,-h是受信任清理緩存的伺服器ip,-p是指定的squid端口

[root@hqtime ~]# /usr/bin/squidclient -h 192.168.1.145 -p 80 -m PURGE http://www.linuxidc.com/404.html

或者

[root@hqtime ~]# /usr/bin/squidclient -p 80 -m PURGE http://www.linuxidc.com/404.html

-------------------------------------------------------

擷取所有緩存 *.jpg 的資訊

[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects | grep jpg

取得squid運作狀态資訊

[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:info

取得squid記憶體使用情況

[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:mem

取得squid已經緩存的清單(小心使用此指令 可能導緻崩潰): 

[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:objects

取得squid的磁盤使用情況: 

[root@hqtime ~]# /usr/bin/squidclient -p 80 mgr:diskd

強制更新某個url:

[root@hqtime ~]# /usr/bin/squidclient -p 80 -m PURGE http://www.yejr.com/static.php

(3)通過腳本删除

比如編寫删除squid緩存的腳本clear_squid_cache.sh,如下:

[root@hqtime ~]# vim clear_squid_cache.sh

#!/bin/sh

squidcache_path="/data1/squid/var/cache"

squidclient_path="/usr/bin/squidclient"

grep -a -r $1 $squidcache_path/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > cache_list.txt

for url in `cat cache_list.txt`; do

$squidclient_path -m PURGE -p 80 $url

done

[root@hqtime ~]# chmod 755 clear_squid_cache.sh #賦予腳本可執行權限

注意:腳本中的下面兩個設定:

squidcache_path= 表示squid緩存目錄的路徑,這個在squid.conf配置檔案中可以查到

squidclient_path= 表示squidclient程式所在的路徑,預設為squid安裝目錄下的bin/squidclient

-p 是指定squid 監聽的端口

用法:

清除所有Flash緩存(擴充名.swf):

[root@hqtime ~]# sh clear_squid_cache.sh swf

清除URL中包含sina.com.cn的所有緩存:

[root@hqtime ~]# sh clear_squid_cache.sh sina.com.cn

清除檔案名為huanqiu.jpg的所有緩存:

[root@hqtime ~]# sh clear_squid_cache.sh huanqiu.jpg

如果對于頻繁更新的gif或者什麼,可以在crontab中添加對應的指令行

假設上述腳本在/root目錄下。如下:

[root@hqtime ~]# crontab -e 

0 * * * * /bin/bash /root/clear_squid_cache.sh gif &

這樣就會每隔一個小時進行一次重新整理操作了,很是友善

如果需要讓圖檔更新人員自行重新整理的話,就可以找相應的人員開發web頁面,進行對腳本的調用就可以了

腳本效率:

經測試,此腳本清除26000個緩存檔案用時2分鐘左右,平均每秒可清除緩存檔案177個。

(4)還有一種方法,直接删除squid的緩存目錄,這樣就删除了squid的全部緩存了!

然後重新建立同名空目錄做為緩存目錄,接着squid -z重新初始化,最後重新開機squid即可!

檢視squid.conf配置檔案,比如緩存目錄是/data1/squid/var/cache(cache_dir後面設定的)

[root@hqtime ~]# rm -rf /data1/squid/var/cache

[root@hqtime ~]# squid -z

[root@hqtime ~]# /etc/init.d/squid restart

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/5991582.html,如需轉載請自行聯系原作者

繼續閱讀