Linux释放内存的命令
Linux释放内存的命令:
sync
echo 1 > /proc/sys/vm/drop_caches
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
释放完内存后改回去让系统重新自动分配内存。
echo 0 >/proc/sys/vm/drop_caches
free -m #看内存是否已经释放掉了。
如果我们需要释放所有缓存,就输入下面的命令:
echo 3 > /proc/sys/vm/drop_caches
Linux自动释放内存脚本
在root目录下建立cache.sh文件:
1: vim cache.sh
#! /bin/bash#Memory小于400M时 释放Cached的内存freemem=$(cat /proc/meminfo | grep "MemFree" | awk '{print $2}')if [ $freemem -le 409600 ];then date >> /var/log/mem.log free -m >> /var/log/mem.log sync sync echo 3 > /proc/sys/vm/drop_caches free -m >> /var/log/mem.logfi
释放内存之前,最好 sync 同步一下,方式数据丢失;
2: 添加可执行的权限
chmod +x cache.sh
3: 定时执行 crontab -e
*/2 * * * * sh /root/cache.sh
每 2 分钟执行一次;
4: 另一个脚本
#! /bin/shused=`free -m | awk 'NR==2' | awk '{print $3}'`free=`free -m | awk 'NR==2' | awk '{print $4}'`echo "===========================" >> /app/memory/logs/mem.logdate >> /app/memory/logs/mem.logecho "Memory usage before | [Use:${used}MB][Free:${free}MB]" >> /app/memory/logs/mem.logif [ $free -le 4000 ] ; then sync && echo 1 > /proc/sys/vm/drop_caches sync && echo 2 > /proc/sys/vm/drop_caches sync && echo 3 > /proc/sys/vm/drop_caches used_ok=`free -m | awk 'NR==2' | awk '{print $3}'` free_ok=`free -m | awk 'NR==2' | awk '{print $4}'` echo "Memory usage after | [Use:${used_ok}MB][Free:${free_ok}MB]" >> /app/memory/logs/mem.log echo "OK" >> /app/memory/logs/mem.logelse echo "Not required" >> /app/memory/logs/mem.logfiexit 1