|Bash Prompt HOWTO: $Revision: 0.100 $, $Date: 2009/08/07 02:33:22 $|
|Prev||Chapter 10. Prompt Code Snippets||Next|
The output of uptime can be used to determine both the system load and uptime, but its output is exceptionally difficult to parse. On a Linux system, this is made much easier to deal with by the existence of the /proc/ file system. cat /proc/loadavg will show you the one minute, five minute, and fifteen minute load average, as well as a couple other numbers I don't know the meaning of (anyone care to fill me in?).
Getting the load from /proc/loadavg is easy (thanks to Jerry Peek for reminding me of this simple method): read one five fifteen rest < /proc/loadavg. Just print the value you want.
For those without the /proc/ filesystem, you can use uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" -e "s/ //g" and replace "\1" with "\2" or "\3" depending if you want the one minute, five minute, or fifteen minute load average. This is a remarkably ugly regular expression: send suggestions if you have a better one.
Relative speed: uptime | sed -e "s/.*load average: \(.*\...\), \(.*\...\), \(.*\...\)/\1/" takes about 0.060 seconds on an unloaded 800MHz Celeron.