[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[orca-users:01562] Re: おくとぱすうっでぃー
- To: orca-users@xxxxxxxxxxxxxx
- Subject: [orca-users:01562] Re: おくとぱすうっでぃー
- From: Yoshinori Ariie <PBA00250@xxxxxxxxx>
- Date: Fri, 27 Sep 2002 20:47:51 +0900
有家@setswapの追加です。
調子に乗って中途半端なものをさらしてしまったと自己嫌悪しています。(^^);
単に "dd && mkswap && swapon" を行うだけのコマンドなのですが
なんとか納得のいくものになったので変更します。
▼
root になり、以下
#!/bin/sh で始まり、 # vim: ts=8: で終わる行までを setswap.sh という名前の
テキストファイルとして現在のディレクトリに切り出し
# mkdir -p /usr/local/sbin
# install -m 0744 setswap.sh /usr/local/sbin
とした後 /usr/local/sbin にパスを通して
# setswap.sh
でヘルプメッセージが表示されることを確認します。
/etc/fstab を前のメールにあるように編集して
# setswap.sh 64
などとして実行します。
昨日の prototype に、いくつかのエラー処理を加え
32MB から 2048MB(2GB) までの範囲で、1MB単位でスワップファイルのサイズを
指定できるようにしました。
"-f" オプションをつけると現在のスワップファイルを消して、新しく作り直します。
root権限で実行するものですので、危険をご承知の上で使用してください。
バグ、誤動作などあれば、ぜひ mail ください。 mailto: pba00250@xxxxxxxxx
▼
#!/bin/sh
#
# setswap.sh: set swapfile /.swapfile; wrapper of "dd && mkswap && swapon"
#
# Copyright (C) 2002 Yoshinori Ariie <pba00250@xxxxxxxxx>
# Last modified 2002/09/27
function die { # show message $1 and exit
echo $1
exit 1
}
function setswap { # set swapfile /.setswap
local size # mega byte count of swap file
local count # byte count of swap file
local rerror=0 # error flag of size
local force=0 # switch to remove current swap file
local fstab=/etc/fstab # /etc/fstab
local swap=/.swapfile # swapfilename
# usage
if [ x$1 = x-f ]; then
force=1
shift
fi
if [ x$1 = x ]; then
cat << EOS
`basename $0` v0.9 - set swapfile $swap of specified size(MB)
Copyright (C) 2002 Yoshinori Ariie <PBA00250@xxxxxxxxx>
Released Under GPL2; No Warranty At All, Use At Your Own Risk
See http://www.gnu.org/licenses/gpl.txt
usage: `basename $0` [-f] <32 .. 2048>
* '-f' option forces to remove current $swap and remake it.
* Argument as decimal integer means size(MB) of swapfile;
it should be between 32 .. 2048.
EOS
return 0
fi
size=$1
# check argument of size
if [ x$(echo $size|tr --delete /0-9/) = x ]; then # $1 is decimal
if [ $size -gt 2048 ]; then # $1 over 2048MB(2GB)
rerror=1
elif [ $size -lt 32 ]; then # $1 below 32MB
rerror=1
fi
else # $1 is not decimal
rerror=1
fi
[ x$rerror = x1 ] && die "argument should be decimal number; between 32 .. 2048"
count=$(( $size * 1024 ))
# check /etc/fstab
if ! grep "$swap" $fstab &> /dev/null; then # $swap not found in $fstab
echo "edit $fstab and add following line"
echo
echo "$swap swap swap defaults 0 0"
return 1
fi
# check existence of swap file
if [ -f $swap ]; then
echo "$swap already exists"
echo
ls -al $swap
echo
if [ x$force = x1 ]; then # remove current /.swapfile then remake
# /sbin/swapoff $swap || die "/sbin/swapoff error"
/sbin/swapoff $swap &> /dev/null
echo -n "removing $swap .. "
rm -f $swap
echo "done"
else # -f option not specified
return 0
fi
fi
# main
echo -n "making swapfile '$swap' (${size}MB) .. "
dd if=/dev/zero of=$swap bs=1024 count=$count || die "`which dd` error"
echo "done"
/sbin/mkswap $swap || die "/sbin/mkswap error"
/sbin/swapon $swap || die "/sbin/swapon error"
echo
echo "$swap successfully created and set as swapfile"
}
setswap $@
#
# end of setswap
#
# vim: ts=8:
--
pba00250@xxxxxxxxx
yoariie@xxxxxxxxxxxxxxx
-------------------------
有家佳紀 Yoshinori Ariie