配置openwrt时,ssh终端收到错误提示;****out of memory。各种无响应,郁闷之下发扬搬运精神,于是有了下面的脚本
#!/bin/sh
used=`free -m | awk 'NR==2' | awk '{print $3}'`
free=`free -m | awk 'NR==2' | awk '{print $4}'`
echo "===========================" >> /var/log/mem.log
date >> /var/log/mem.log
echo "Memory usage | [Use:${used}KB][Free:${free}KB]" >> /var/log/mem.log
if [ $free -le 153600 ] ; 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
echo "OK" >> /var/log/mem.log
else
echo "Not required" >> /var/log/mem.log
fi
具体作用,查询内存剩余量,低于限定量则清理内存。这里是153600也就是150M以下清理,这里先运行sync,可以防止数据丢失。保存为以下路径:/usr/bin/memclean.sh
然后设置定时运行,修改 /etc/crontabs/root 文件,添加一行
*/10 * * * * /usr/bin/memclean.sh
表示10分钟检测一次内存余量,低于150M 就清理!!!!