キャッシュ・メモリをクリアする方法
kernel 2.6.16 以降で使用出来る
sudo sysctl -w vm.drop_caches=[1-3]
bash alias に設定しておくと便利
alias cache2="sync; sudo sysctl -w vm.drop_caches=2; vmstat"
alias cache3="sync; sudo sysctl -w vm.drop_caches=3; vmstat"
sysctl コマンドを使用するが、設定はコマンドを実行した時点で機能するだけで、
必要な場合には再度コマンドを実行する。
参考)
Linux kernelドキュメント
linux.x.x.x/Documentation/sysctl/vm.txt
drop_caches
Writing to this will cause the kernel to drop clean caches, dentries and
inodes from memory, causing that memory to become free.
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
As this is a non-destructive operation and dirty objects are not freeable,
the user should run `sync' first.
Squid proxy のキャッシュの削除
ネットワーク上のデータを更新してもSquid proxy のキャッシュが古いデータを使用する場合がある
指定したファイルだけキャッシュから削除
sudo squidclient -h 192.168.2.4 -p 3128 -r http://www.king.zaq.jp/nakano/js/main.css
sudo squidclient -h 192.168.2.4 -p 3128 -r http://www.king.zaq.jp/nakano/projects/projects.json
Squid 全てのキャッシュを削除
bash alias に設定しておくと便利
function squidcleand() {
dtime=`date +%Y_%m%d`
sudo systemctl stop squid.service
sudo rm -rf /opt/squid3/var/cache/*
sudo rm -f /opt/squid3/var/run/squid.pid
sudo mv /opt/squid3/var/logs/cache.log /opt/squid3/var/logs/cache_${dtime}.log
sudo mv /opt/squid3/var/logs/access.log /opt/squid3/var/logs/access_${dtime}.log
sudo /opt/squid3/sbin/squid -z
sudo systemctl start squid.service
}
alias squidclean=squidcleand