[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:01562] Re: おくとぱすうっでぃー



有家@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