#!/bin/bash # Creating a swap file. # A swap file provides a temporary storage cache #+ which helps speed up certain filesystem operations. ROOT_UID=0 # Root has $UID 0. E_WRONG_USER=85 # Not root? FILE=/swap BLOCKSIZE=1024 MINBLOCKS=40 SUCCESS=0 # This script must be run as root. if [ "$UID" -ne "$ROOT_UID" ] then echo; echo "You must be root to run this script."; echo exit $E_WRONG_USER fi blocks=${1:-$MINBLOCKS} # Set to default of 40 blocks, #+ if nothing specified on command-line. # This is the equivalent of the command block below. # -------------------------------------------------- # if [ -n "$1" ] # then # blocks=$1 # else # blocks=$MINBLOCKS # fi # -------------------------------------------------- if [ "$blocks" -lt $MINBLOCKS ] then blocks=$MINBLOCKS # Must be at least 40 blocks long. fi ###################################################################### echo "Creating swap file of size $blocks blocks (KB)." dd if=/dev/zero of=$FILE bs=$BLOCKSIZE count=$blocks # Zero out file. mkswap $FILE $blocks # Designate it a swap file. swapon $FILE # Activate swap file. retcode=$? # Everything worked? # Note that if one or more of these commands fails, #+ then it could cause nasty problems. ###################################################################### # Exercise: # Rewrite the above block of code so that if it does not execute #+ successfully, then: # 1) an error message is echoed to stderr, # 2) all temporary files are cleaned up, and # 3) the script exits in an orderly fashion with an #+ appropriate error code. echo "Swap file created and activated." exit $retcode