squid的缓存批量更新问题,因代理上有很多的域名,部分客户的网站如图片等会经常更新,要求又比较紧急,所以写了个自动清除缓存的脚本,后来网上也搜查了个,感觉还是别人的写的比较好,这里我把自己写的跟别人写的都记录下,方便以后查看。
我个人写的clear_squidcache.sh
#!/bin/bash #clear_squidcache.sh FILE="/tmp/123.txt" #这里的123.txt中是存放更新文件的完整url路径。 cat $FILE |while read line do /usr/local/squid/bin/squidclient -l 127.0.0.1 -p 80 -m PURGE $line >/dev/null 2>&1 donerm -f /tmp/123.txt
在网上找到高手写的:
#!/bin/sh squidcache_path1="/data/cache1" # Squid 的缓存目录 squidcache_path2="/data/cache2" squidclient_path="/usr/local/squid/bin/squidclient" # squidclient 的路径 grep -a -r $1 $squidcache_path1/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' > /tmp/cache_list.txt grep -a -r $1 $squidcache_path2/* | strings | grep "http:" | awk -F'http:' '{print "http:"$2;}' >> /tmp/cache_list.txt cat cache_list.txt |while read url; do $squidclient_path -l 127.0.0.1 -m PURGE -p 80 $url # 80 端口根据你squid的http 设置自行修改 donerm -f /tmp/cache_list.txt
这个是我稍微修改过的,功能相对我个人写的要强大多了,可以拿来借鉴学习。用法也比较简单,保存脚本为clear_squid_cache.sh,赋予执行权限。
执行清除域名缓存:./clear_squid_cache.sh
清除后缀缓存:./clear_squid_cache.sh jpg
清除特定文件缓存:./clear_squid_cache.sh 123.jpg
后续再研究研究,看看是否有更好的办法,或者再对脚本进行优化优化。