linux下怎么清理緩存
free -m 命令可以查看內存使用情況 sysctl 命令可以臨時改變某個系統參數 如:sysctl -w net.ipv4.ip_forward=1 是將forware參數臨時改為1 當 service network restart后 失效.
我們在清理緩存前應該先
sync下
因為系統在操作的過程當中,會把你的操作到的文件資料先保存到buffer中去,因為怕你在操作的過程中因為斷電等原因遺失數據,所以在你操作過程中會把文件資料先緩存。
所以我們在清理緩存先要先把buffe中的數據先寫入到硬盤中,sync命令
上面的echo 3 是清理所有緩存
echo 0 是不釋放緩存
echo 1 是釋放頁緩存
ehco 2 是釋放dentries和inodes緩存
echo 3 是釋放 1 和 2 中說道的的所有緩存
1>. /proc是一個虛擬文件系統,我們可以通過對它的讀寫操作作為與kernel實體間進行通信的一種手段。也就是說可以通過修改/proc中的文件,來對當前kernel的行為做出調整。也就是說我們可以通過調整/proc/sys/vm/drop_caches來釋放內存。
1 – 釋放頁緩存
2 – 釋放dentries和inodes
3 – 釋放所有緩存
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 >/proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync first.
目錄項緩存(dcache)dentries
total:總物理內存
used:已使用內存
free:完全未被使用的內存
shared:應用程序共享內存
buffers:緩存,主要用於目錄方面,inode值等
cached:緩存,用於已打開的文件
-buffers/cache:應用程序使用的內存大小,used減去緩存值
+buffers/cache:所有可供應用程序使用的內存大小,free加上緩存值
total = used + free
-buffers/cache=used-buffers-cached,這個是應用程序真實使用的內存大小
+buffers/cache=free+buffers+cached,這個是 服務器 真實還可利用的內存大小
[oracle@cddserver1 ~]$ free -m
total used free shared buffers cached
Mem: 32096 10379 21717 0 38 7942
-/+ buffers/cache: 2398 29698
Swap: 34287 0 34287
這里面的第二行才是真正服務器的空閑內存
echo 1 > /proc/sys/vm/drop_caches 可以暫時清空cache和buffer
在rhel5和Ubuntu上(rhel4不可以),可以直接修改內核文件
# /etc/sysctl.conf
vm.drop_caches = 1
#sysctl -p
$ sync
$ free -m
total used free shared buffers cached
Mem: 32096 30084 2011 0 590 26162
-/+ buffers/cache: 3332 28764
Swap: 34287 0 34287
echo 3 > /proc/sys/vm/drop_caches
free -m
一、 arp -n|awk '/^[1-9]/ {print "arp -d "$1}' | sh
清除所有ARP緩存,推薦!
二、for((ip=2;ip<255;ip++));do arp -d 192.168.0.$ip &>/dev/null;done
清除192.168.0.0網段的所有緩存
三、arp -d IP
這樣可以清除單一IP 的ARP緩存