Some Real Work
In this lesson, we will develop some of our shell functions and get our script to produce some useful information.
show_uptime
The show_uptime
function will display the output of the uptime
command. The uptime command outputs several interesting facts about the system,
including the length of time the system has been "up" (running) since its last
re-boot, the number of users and recent system load.
uptime
9:15pm up 2 days, 2:32, 2 users, load average: 0.00, 0.00, 0.00To get the output of the uptime command into our HTML page, we will code our shell function like this, replacing our temporary stubbing code with the finished version:
echo
"<h2>System uptime</h2>"
echo
"<pre>"
uptime
echo
"</pre>"
}As we can see, this function outputs a stream of text containing a mixture of HTML tags and command output. When the command substitution takes place in the main body of the our program, the output from our function becomes part of the here script.
drive_space
The drive_space function will use the df
command to provide a
summary of the space used by all of the mounted file systems.
df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda2 509992 225772 279080 45% /
/dev/hda1 23324 1796 21288 8% /boot
/dev/hda3 15739176 1748176 13832360 12% /home
/dev/hda5 3123888 3039584 52820 99% /usrIn terms of structure, the drive_space
function is very similar
to the show_uptime function:
echo
"<h2>Filesystem space</h2>"
echo
"<pre>"
df
echo
"</pre>"
}home_space
The home_space
function will display the amount of space each
user is using in his/her home directory. It will display this as a list, sorted
in descending order by the amount of space used.
echo
"<h2>Home directory space by user</h2>"
echo
"<pre>"
echo
"Bytes Directory"
du -s /home/* | sort -nr
echo
"</pre>"
}Note that in order for this function to successfully execute, the script
must be run by the superuser, since the du
command requires superuser privileges to examine the
contents of the /home directory.
system_info
We're not ready to finish the system_info
function yet. In the
meantime, we will improve the stubbing code so it produces valid HTML:
echo
"<h2>System release info</h2>"
echo
"<p>Function not yet implemented</p>"
}