[教程] 【虚拟内存】为路由器增加虚拟内存 SWAP(更新脚本)
将路由器作下载器有时会遇到内存居高不下,需要添加虚拟内存做后援。
下面的代码保存到 /jffs/scripts/ 目录下,文件名为S88swap,属性为0755
(其实可以放到任何位置,只要输入绝对的路径即可)
- #!/bin/sh
- PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/bin
- APPS_DEV=`/bin/mount | grep -E 'mnt' | sed -n 1p | cut -d" " -f1`
- APPS_MOUNTED_PATH=`/bin/mount | grep -E 'mnt' | sed -n 1p | cut -d" " -f3`
- APPS_INSTALL_FOLDER=swap
- APPS_INSTALL_PATH=$APPS_MOUNTED_PATH/$APPS_INSTALL_FOLDER
- APPS_PATH=${APPS_MOUNTED_PATH:9}
- SWAP_FILE=`nvram get apps_swap_file`
- SWAP_SIZE=`nvram get apps_swap_size`
- case "$1" in
- start)
- mem_size=`free |sed '1,3d' |awk '{print $4}'`
- pool_size=`df $APPS_DEV |sed '1d' |awk '{print $4}'`
- if [ $pool_size -gt $SWAP_SIZE ]; then
- if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then
- swapoff $APPS_INSTALL_PATH/$SWAP_FILE
- rm -rf $APPS_INSTALL_PATH/$SWAP_FILE
- fi
- mkdir -p $APPS_INSTALL_PATH
- swap_count=`expr $SWAP_SIZE / 1000 - 1`
- echo "dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count"
- dd if=/dev/zero of=$APPS_INSTALL_PATH/$SWAP_FILE bs=1M count=$swap_count
- echo "mkswap $APPS_INSTALL_PATH/$SWAP_FILE"
- mkswap $APPS_INSTALL_PATH/$SWAP_FILE
- echo "swapon $APPS_INSTALL_PATH/$SWAP_FILE"
- swapon $APPS_INSTALL_PATH/$SWAP_FILE
- echo "......................................................................."
- free
- echo "......................................................................."
- echo ""
- else
- echo "No enough partition size!"
- exit 1
- fi
- ;;
-
- stop)
- if [ -e "$APPS_INSTALL_PATH/$SWAP_FILE" ]; then
- swapoff $APPS_INSTALL_PATH/$SWAP_FILE
- rm -rf $APPS_INSTALL_PATH/$SWAP_FILE
- echo "......................................................................."
- free
- echo "......................................................................."
- echo ""
- fi
- ;;
- *)
- exit 1
- ;;
- esac
复制代码 路由器插入USB设备,然后在webshell运行 /jffs/scripts/S88swap start
会自动在USB设备的根目录创建一个名为swap的文件夹,虚拟内存文件.swap存放在这里。
如果成功,会提示挂载的虚拟内存有多大。如果Swap的total为0证明未加载虚拟内存 停止虚拟内存命令: /jffs/scripts/S88swap stop
也可以用: swapoff /mnt/sda1/swap/.swap
虚拟内存文件的绝对路径。sda1是USB磁盘
默认为33M虚拟内存,可以手动改大小。
SWAP_SIZE=`nvram get apps_swap_size`
例如改为128M ,SWAP_SIZE=128000
重启后就失效,所以需要手动添加到启动文件里去。
在 /jffs/scripts/wan-start 最后一行添加/jffs/scripts/S88swap start 即可
有些酷友运行出错,请说明路由器型号,固件版本
我的测试环境:AC68U 梅林_小宝改版固件 380.57_X6.5
且运行下面的脚本,将结果反馈:
echo APPS_DEV=`/bin/mount | grep -E 'mnt' | sed -n 1p | cut -d" " -f1`
echo APPS_MOUNTED_PATH=`/bin/mount | grep -E 'mnt' | sed -n 1p | cut -d" " -f3`
echo SWAP_FILE=`nvram get apps_swap_file`
echo SWAP_SIZE=`nvram get apps_swap_size`
Ps:至于需要多大的虚拟内存,还是自己琢磨,不一定越大越好。
也有人说虚拟内存装U盘的话,进行下载会有大量读写损坏U盘,自己斟酌。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。