仅为方便和练习:自动增加swap的小脚本
发布时间:2009-12-14 15:24:33来源:红联作者:一米短绳
[i=s] 本帖最后由 一米短绳 于 2009-12-14 15:53 编辑 [/i]
今天没老实的背期末复习题,刚才看到geguimin兄弟需要建立虚拟内存,后来geguimin兄弟自己已经弄好了。
然后我就想到了我自己,既然已经学了点shell脚本和建立swap的方法,何不写一个脚本来方便自己或者大家呢?
于是开始写。
先介绍一下菜鸟这个东西涉及到的小知识:
首先是指令---》 主要是dd / mkswap /swapon
其次是特殊的设备文件 /dev/zero
然后是一些有关shell的:比如>> 、 ${} 、 a=${a:-b} 、(test)[]判断等
最后就是我最喜欢的if语句啦~~
额外的,就是/etc/rc.d/rc.local这个配置文件----等于是个“批处理”文件,这样可以在下次开机自动启用新建的swap页面文件。为什么要用rc.local呢?因为在linux上面,一件事根据个人的习惯和经验可以有多种方法去解决或完成。所以大家也可以根据自己的习惯来更改脚本中关于自启动的代码。
这是效果:
[attach]28560[/attach]
当然,需要有root执行权限的。
先附上源代码(主要运行在图形界面的终端,所以出现了中文的提示)[code]#!/bin/bash
#Description:
# I do it for auto-create-swap.That's all.Only for working more easy.
#
#2009/12/14 一米短绳
#minghuan1204@gmail.com
#
PATH=$PATH:/sbin:/bin
export PATH
echo "你可以用free -m指令查看下当前的swap,这只是为之后验证确实增加了swap"
echo "你可以完全安全的反复运行这个脚本从而继续增加swap"
echo "运行后会在/tmp下建立一个存储swap页面的目录,当然你可以通过修改"
echo "脚本内容来进行个性设置"
swapdir=swap-extra
[ -e /tmp/$swapdir ] || mkdir /tmp/$swapdir
number=1
if [ -e /tmp/$swapdir/$number.swap ];then
number=$(($number+1))
fi
echo "建立/tmp/$swapdir/$number.swap"
echo =======================================================
echo "输入欲增加的swap大小,若是比较大(>512M),创建时间取决于你的硬盘读写速度"
read -p "(M字节,直接写数字不用写单位,默认是128):" swapnumber
swapnumber=${swapnumber:-128}
dd if=/dev/zero of=/tmp/$swapdir/${number}.swap bs=1M count=${swapnumber}
mkswap /tmp/$swapdir/$number.swap
swapon /tmp/$swapdir/$number.swap
echo "Complete!"
choice=y
read -p "需要设置开机自动启用吗?(y or n):" choice
if [ "$choice" == "y" ];then
echo "[ -e /tmp/$swapdir/$number.swap ] && swapon /tmp/$swapdir/$number.swap" >> /etc/rc.d/rc.local
echo "已经写入/etc/rc.d/rc.local以便开机下次开机即可使用新增的swap页面。"
else
echo "没有写入开机自动启用新增的swap"
fi
echo ===========================================================
echo "程序结束,你可以查看/tmp/$swapdir 目录中的swap页面文件,"
echo "同时,可以查看/etc/rc.d/rc.local 文件来确定/更改开机启用配置"
echo ============================================================
echo "若有疑问或其他,请联系minghuan1204@gmail.com共同交流。一米短绳,祝您愉快!"
echo ===========================================================
[/code]再附上打包好的tar.gz :
[attach]28559[/attach]